|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
webcrea Nouveau WRInaute
Inscrit le: 01 Sep 2003 Messages: 49 Localisation: Paris
|
Posté le : Lun Déc 19, 2005 13:19 Sujet du message: Moteur de recherches sur 3 tables mysql |
|
|
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 |
|
| |
|
 |
chantra WRInaute impliqué

Inscrit le: 27 Juin 2005 Messages: 257
|
Posté le : Lun Déc 19, 2005 13:34 Sujet du message: Moteur de recherches sur 3 tables mysql |
|
|
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%' |
|
|
| |
|
 |
webcrea Nouveau WRInaute
Inscrit le: 01 Sep 2003 Messages: 49 Localisation: Paris
|
Posté le : Lun Déc 19, 2005 13:53 Sujet du message: Moteur de recherches sur 3 tables mysql |
|
|
ç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... |
|
| |
|
 |
chantra WRInaute impliqué

Inscrit le: 27 Juin 2005 Messages: 257
|
Posté le : Lun Déc 19, 2005 13:57 Sujet du message: Moteur de recherches sur 3 tables mysql |
|
|
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 |
|
| |
|
 |
webcrea Nouveau WRInaute
Inscrit le: 01 Sep 2003 Messages: 49 Localisation: Paris
|
Posté le : Lun Déc 19, 2005 14:01 Sujet du message: Moteur de recherches sur 3 tables mysql |
|
|
J'ai vais mal adapté mes noms de champs.
C'était bien ça Chantra, merci ! |
|
| |
|
 |
chantra WRInaute impliqué

Inscrit le: 27 Juin 2005 Messages: 257
|
Posté le : Lun Déc 19, 2005 14:07 Sujet du message: Moteur de recherches sur 3 tables mysql |
|
|
.
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 |
|
| |
|
 |
YvesB WRInaute passionné

Inscrit le: 11 Jan 2004 Messages: 515 Localisation: Bournemouth, England
|
Posté le : Lun Déc 19, 2005 16:36 Sujet du message: Moteur de recherches sur 3 tables mysql |
|
|
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%') |
|
|
| |
|
 |
chantra WRInaute impliqué

Inscrit le: 27 Juin 2005 Messages: 257
|
Posté le : Lun Déc 19, 2005 17:02 Sujet du message: Moteur de recherches sur 3 tables mysql |
|
|
| 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. |
|
| |
|
 |
| |
|
|