Requéte dans plusieurs table

Eléphant du PHP | 68 Messages

03 nov. 2007, 12:00

Bonjour,
J'aimerai faire un moteur de recherche du contenu se trouvant sur mon site.
Et quand on met un mot clé çà cherche ce mot clé dans les tables que je veux dans certaines colones (nom, description,...)
Et que dans la résultat je puisse connaitre de quelle table la donnée vient pour pouvoir mettre les liens aprés.

Voici mes tables :
Video (id,nom,description)
Actualite (id,nom,actu)

Et par exemple si je met le mot clé Bourse sa cherche ce mot clé dans les tables Video, et Actualite dans les colones nom,description et actu et si des résultats sont trouvé pouvoir connaitre le nom de la table.

Je ne sais pas si vous m'avez compris....
Merci d'avance ;)

eru
Eléphanteau du PHP | 39 Messages

03 nov. 2007, 12:06

tu peux essayer de faire des jointures, genre :

Code : Tout sélectionner

"SELECT * FROM table1, table2 WHERE table1.champ1 LIKE = '%motcle' OR table1.champ2 LIKE = '%motcle' OR table2.champ1 LIKE = '%motcle' OR table2.champ2 LIKE = '%motcle' ;
C'est un peu laborieux je le concède mais ca devrait marcher...

Eléphant du PHP | 68 Messages

03 nov. 2007, 12:11

La le probléme c'est que sa retourne tout sur un seul enregistrement :S
Enfin si sa trouve une info dans la table1 et aussi dans la table2 sa fait un seul enregistrement

eru
Eléphanteau du PHP | 39 Messages

03 nov. 2007, 12:22

et en faisant deux requêtes séparées? une pour chaque table?
Parce que si je comprends bine, si tu tapes ton mot clé, il faut retrouver toutes les entrées correspondante, quelle que soit la table?

Si tu fais deux requêtes, c pas beaucoup plus long, et tu sais automatiquement d'où vient l'entrée non?

Eléphant du PHP | 68 Messages

03 nov. 2007, 12:39

Ouai ta raison je vais pas m'enbéter je vais faire comme çà.
Merci ;)

eru
Eléphanteau du PHP | 39 Messages

03 nov. 2007, 12:39

bin j'ai jamais vu faire... essaye lol, mais je pense pas que ça marche.... perso je ne m'y risquerais pas

pourquoi ne pas en faire deux a la suite comme pour les requêtes?

situ souhaites vraiement tou faire 'un coup voici une solution mais je ne suis pas convaincu....

Code : Tout sélectionner

$a[0][0] = "resultats de ta première requete"; $a[1][0] = "resultats de ta deuxieme requete"; foreach ($a as $v1) { foreach ($v1 as $v2) { echo "$v2\n"; } }
enfin un truc dans le genre.... Il doit exister un sytème plus simple, mais là je vois pas trop....

ViPHP
ViPHP | 5924 Messages

03 nov. 2007, 13:10

Tu peux faire une UNION :

Code : Tout sélectionner

(SELECT 'table1' as nom_table, * FROM table1 WHERE table1.champ1 LIKE = '%motcle' OR table1.champ2 LIKE = '%motcle' ) UNION (SELECT 'table2' as nom_table, * FROM table2 WHERE table2.champ1 LIKE = '%motcle' OR table2.champ2 LIKE = '%motcle' )
Ca te renvoie tout en une seule requète, les 'table1' as nom_table et 'table2' as nom_table, te permettant d'identifier de quelle table provient l'enregistrement. Et tu peux utiliser les clauses d'ordre et de limite sur le résultat aussi…

@eru : Les requètes multiples c'est une fonction spéciale et je crois qu'elle ne renvoie le résultat que de la dernière requète…

eru
Eléphanteau du PHP | 39 Messages

03 nov. 2007, 13:19

@Sékiltoyai : merci, je ne connaissais pas le mot clé UNION, j'ai donc induit guillaume dans un mur :oops:

toutes mes confuses guillaume :D

ViPHP
ViPHP | 5924 Messages

03 nov. 2007, 13:22

On ne peut pas tjs tout connaître :-/

eru
Eléphanteau du PHP | 39 Messages

03 nov. 2007, 13:27

si il faut etre un Mago :wink: