Jointure de table complexe sql

Fermé
ideal23 Messages postés 456 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 16 mai 2014 - 10 déc. 2011 à 12:01
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 - 13 déc. 2011 à 22:57
Bonjour,
voici mon problème, que je n'arrive pas à résoudre. J'ai fait une requête sql pour afficher le résultat de la jointure de 2 tables. Mais il me manque l'affichage d'un champ.
les tables:
menu
http://creuselimousin.free.fr/tablepetite.jpg
articles
http://creuselimousin.free.fr/articles.jpg
ma requête:
SELECT articles.titre, articles.'description', articles.prix, articles.photo, menu.id_menu, menu.item_menu, menu.id_menu_dir, articles.reference
FROM articles, menu
WHERE articles.ref_menu=menu.id_menu
ORDER BY id_menu ASC


les champs voulus de la table articles sont visibles, les champs sous menus de la table menu également, mais il manque les champs du menu principal, identifiés par id_menu_dir.

une image pour expliquer ma demande:
http://creuselimousin.free.fr/requete1.jpg
j'ai essayé avec une autre requete:
SELECT articles.reference,articles.prix,articles.description,articles.titre,m1.id_menu,m1.item_menu,m2.id_menu,m2.item_menu
FROM articles
  INNER JOIN menu AS m1 ON m1.id_menu = articles.ref_menu
 INNER JOIN menu AS m2 ON m2.id_menu = m1.id_menu_dir 

là c'est le contraire j'ai les éléments du menu principal, pas des sous menus, j'ai dû faire une erreur.
Avez-vous une idée pour construire cette requête. Merci


A voir également:

8 réponses

Anoen Messages postés 196 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 11 septembre 2013 25
10 déc. 2011 à 13:26
Bonjour,

Dans le SELECT tu ne lui demande pas de récupérer id_menu_dir
0
ideal23 Messages postés 456 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 16 mai 2014 28
11 déc. 2011 à 14:10
j'ai pensé à cette requête
SELECT articles.reference,articles.titre,m1.id_menu,m1.item_menu,m2.id_menu,m2.item_menu
FROM articles
INNER JOIN menu AS m1 ON m1.id_menu = articles.ref_menu
INNER JOIN menu AS m2 ON m2.id_menu = m1.id_menu_dir

mais çà ne fonctionne pas
0
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
Modifié par vordano le 11/12/2011 à 14:24
bonjour,

est ce qu'il serais possible d'avoir une exportation de ces deux tables (structure+donnée) dans un fichier.sql ? (histoire de faire les tests pour trouver l'erreur, parce qu'à priori ta première requète est correcte)
0
ideal23 Messages postés 456 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 16 mai 2014 28
11 déc. 2011 à 14:30
oui bien sûr
http://creuselimousin.free.fr/articles.sql
http://creuselimousin.free.fr/menu.sql
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
11 déc. 2011 à 14:55
après quelques test, voici ce que j'ai obtenu:
SELECT titre,m1.item_menu as 'menu parent', m2.item_menu as 'menu enfant'
FROM menu m1, menu m2,articles
WHERE m1.id_menu=m2.id_menu_dir
and ref_menu=m2.id_menu

j'ai évidemment supprimé toutes les colonnes superflu de la requètes, mais je pense que ça doit correspondre à ta demande.
0
ideal23 Messages postés 456 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 16 mai 2014 28
11 déc. 2011 à 16:45
Merci vordano, efficace, et rapide. Ta requête fonctionne parfaitement. çà correspond bien à ma demande, bonne soirée et encore Merci
0
ideal23 Messages postés 456 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 16 mai 2014 28
12 déc. 2011 à 00:52
Une question à propos de cette requête. Peut-on passer une variable d'url avec $_GET facilement pour afficher le résultat des différents éléments du menu à chaque clique.
exemple :pour carrelage intérieur et les 2 sous menus correspondants, affichage des 4 données de la table articles, ainsi de suite.
0
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
13 déc. 2011 à 22:57
$req="SELECT titre,m1.item_menu as 'menu parent', m2.item_menu as 'menu enfant'
FROM menu m1, menu m2,articles
WHERE m1.id_menu=m2.id_menu_dir
and ref_menu=m2.id_menu
and titre='".$_GET['titre']."';";


et voilà, ça te va ?
0