Triple jointure MySQL

Triple jointure MySQL - SQL/NoSQL - Programmation

Marsh Posté le 17-12-2005 à 18:15:48    

Bonjour,
 
Bien qu'ayant lu d'autres sujets sur le forum concernant des jointures triples en SQL, je n'arrive toujours pas à faire la mienne.
Je vous expose mon probleme :
 
J'ai trois tables, l'une contenant des informations d'établissements (nom, adresse, téléphone...) une deuxieme qui contient les catégories d'etablissements (restaurants, bars, disquaires...) ainsi que des sous catégories (restaurant > asiatique, italien...) et enfin une table qui lie les etablissements aux catégories. Donc par ca donne :


etablissements
---------------
id
nom
adresse
codepostal
ville
...
 
categories
-----------
id
categorie (son nom)
id_sup (0 si il s'agit d'une categorie principale, par exemple restaurants)
 
type
-----
id_etab
id_cat


 
Le but de mon script (PHP) est de rechercher des etablissements. Il y a un input pour mettre des mots clés (a ce moment on ira chercher dans le nom, l'adresse, la ville... de l'établissement) et un menu déroulant avec toutes les catégories et sous catégories.
 
Pour l'instant ma requete (qui ne renvoit pas d'erreur, mais qui ne fonctionne pas correctement pour autant) est ainsi :
 

SELECT * FROM type INNER JOIN etablissements ON [tous les champs de recherches possibles avec les mots clés] INNER JOIN categories ON (categories.id = $_POST["categorie"] OR categories/id_sup = $_POST["categorie"] GROUP BY etablissements.id


 
Dans le résultat de la requete, c'est comme si je ne stipulait aucune catégorie.
 
Quelqu'un pourrait-il m'aider ?
Je vous remercie d'avance !
 
Gadro

Reply

Marsh Posté le 17-12-2005 à 18:15:48   

Reply

Marsh Posté le 17-12-2005 à 22:39:12    

Je ferais plutôt :

Code :
  1. SELECT *
  2. FROM etablissements
  3. INNER JOIN type ON etablissements.id = type.id_etab
  4. INNER JOIN categories ON type.id_cat = categories.id OR type.id_cat = categories.id_sup
  5. WHERE [les champs de recherche] AND (categories.id = $_POST["categorie"] OR categories.id_sup = $_POST["categorie"]) GROUP BY etablissements.id


 
Sino, ça serait mieux de remplacer * par la liste des champs que tu veux vraiment récupérer, ton GROUP BY par SELECT DISTINCT etablissements.id, et protège moi ces $_POST [:petrus75]

Reply

Marsh Posté le 17-12-2005 à 23:30:17    

Super, ca marche ! Merci beaucoup.
Sinon le * et ne pas faire '".$_POST["blabla"]."' c'etait juste pour rendre moins brouillon le truc :)
 
Merci beaucoup.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed