Moteur de recherches sur 3 tables mysql

Nouveau WRInaute
Bonjour,

Peut-être pourrez-vous m'aider :
je cherche donc à faire une recherche multi-tables.
J'ai une table de films, une autre d'acteurs et une autre de réalisateurs.
J'aimerai simplement que lorsqu'un visiteur fasse une recherche, celle-ci soit faite sur l'ensemble des tables.

Voici ma requête (fausse) qui me ramène un film autant de fois qu'il y a d'acteurs différents (et en affichant spielberg pour chaque résultat !) :( .

Code:
SELECT p.titre, p.description, a.nom, r.nom FROM dsf_produits p, dsf_acteurs a, dsf_realisateurs r where p.titre LIKE '%spielberg%' OR p.description LIKE '%spielberg%' OR a.nom LIKE '%spielberg%' OR r.nom LIKE '%spielberg%'

Avez-vous une idée d'où vient mon erreur ?

Merci de votre aide
 
WRInaute discret
utilise les inner join, ca devrait aider.
Code:
SELECT p.titre, p.description, a.nom, r.nom FROM dsf_produits p inner join dsf_acteurs as a on (a.id_film=p.id)
inner join  dsf_realisateurs as r on (r.id_film=p.id) 
where p.titre LIKE '%spielberg%' OR p.description LIKE '%spielberg%' OR a.nom LIKE '%spielberg%' OR r.nom LIKE '%spielberg%'
 
Nouveau WRInaute
ça ne donne aucun résultat.

Code:
SELECT p.titre, p.description, a.nom, r.nom
FROM dsf_produits p
INNER JOIN dsf_acteurs AS a ON ( a.id = p.id ) 
INNER JOIN dsf_realisateurs AS r ON ( r.id = p.id ) 
WHERE p.titre LIKE '%spielberg%'
OR p.description LIKE '%spielberg%'
OR a.nom LIKE '%spielberg%'
OR r.nom LIKE '%spielberg%'

Cette recherche devrait donner 3 résultats...
 
WRInaute discret
Du devrait peut-etre jongler avec les differents types de join (left, right, inner).

puis ca depend un peu de la structure de ta base
 
WRInaute discret
:) .
Ben au moins ca marche :)
le site est en construction ou il tourne deja?

s'il tourne deja, tu peux m'envoyer l'url en pm stp.
merci
 
WRInaute occasionnel
Facile, il faut juste que tu accordes les id de chaque tables

Code:
SELECT p.titre, p.description, a.nom, r.nom 
FROM dsf_produits p 
WHERE  a.id = p.id and r.id = p.id and (p.titre LIKE '%spielberg%' 
OR p.description LIKE '%spielberg%' 
OR a.nom LIKE '%spielberg%' 
OR r.nom LIKE '%spielberg%')
 
WRInaute discret
au passage, est-ce que quelqu'un sait ce qui est le mieux (en terme de performances)entre les requetes avec inner join ou les requetes multiple php.
 
Discussions similaires
Haut