Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1615 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Triple jointure MySQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Triple jointure MySQL

n°1269014
Gadro
Posté le 17-12-2005 à 18:15:48  profilanswer
 

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

mood
Publicité
Posté le 17-12-2005 à 18:15:48  profilanswer
 

n°1269236
multani
Dépressionnisé
Posté le 17-12-2005 à 22:39:12  profilanswer
 

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]

n°1269257
Gadro
Posté le 17-12-2005 à 23:30:17  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Triple jointure MySQL

 

Sujets relatifs
update sous mysql[mysql] recherche "distinct"
Optimisation d'une jointure entre 3 tablesSite PHP/Mysql
Mysql sous linuxJointure conditionnelle
[ MySQL] chaines de caractères : LEFT() / RIGHT()[MySQL] Recherche de mots dans un blob
connexion et echange de donnée avec base mysqlDELPHI DBExpress et MySql
Plus de sujets relatifs à : Triple jointure MySQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR