Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/12/2011, 15h30   #1
Membre confirmé
 
Inscription : octobre 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 340
Points : 221
Points : 221
Envoyer un message via MSN à ideal23
Par défaut Résultat jointure avec champs null

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 qui correspond à un autre champ null.
les tables:
menu:

articles:

ma requête:
Code :
1
2
3
4
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
résultat de la requête:

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.
Comment les afficher , avez-vous une idée pour construire cette requête. Merci
ideal23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 15h38   #2
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 099
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 099
Points : 1 922
Points : 1 922
Bonjour,
Je ne vois pas trop le lien entre les valeur nulls et ta demande.
Il te faut ajouter une jointure avec la table menu (et donc passer par un alias) pour récupérer le "parent" du menu associé à ton article, avec une jointure sur id_menu et id_menu_dir.

Tatayo.
tatayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 15h42   #3
Membre confirmé
 
Inscription : octobre 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 340
Points : 221
Points : 221
Envoyer un message via MSN à ideal23
oui, je vois, mais je n'y arrive pas
une image pour expliquer ma demande
ideal23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 15h51   #4
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 099
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 099
Points : 1 922
Points : 1 922
Un truc du genre:
Code SQL :
1
2
3
4
5
 
SELECT xxx
FROM article
INNER JOIN menu AS m1 ON m1.id_menu = article.ref_menu
INNER JOIN menu AS m2 ON m2.id_menu = m1.id_menu_dir

Tatayo.
tatayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 15h58   #5
Membre confirmé
 
Inscription : octobre 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 340
Points : 221
Points : 221
Envoyer un message via MSN à ideal23
Merci de ta réponse, il y a une petite erreur de syntaxe , je poursuis
ideal23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 16h16   #6
Membre confirmé
 
Inscription : octobre 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 340
Points : 221
Points : 221
Envoyer un message via MSN à ideal23
Champ 'articles.ref_menu' inconnu dans on clause where, bizarre
ideal23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 16h42   #7
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 099
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 099
Points : 1 922
Points : 1 922
Citation:
Envoyé par ideal23 Voir le message
Champ 'articles.ref_menu' inconnu dans on clause where, bizarre
D'autant plus qu'il n'y a pas de clause WHERE dans ma requête...

Tatayo.
tatayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 17h09   #8
Membre confirmé
 
Inscription : octobre 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 340
Points : 221
Points : 221
Envoyer un message via MSN à ideal23
ok mais je n'ai plus les sous menus et j'ai 1 seul menu principal, carrelage intérieur pour tous
ideal23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 17h23   #9
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 099
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 099
Points : 1 922
Points : 1 922
Sans voir la requête, difficile de dire ce qui ne va pas

Tatayo.
tatayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 17h37   #10
Membre confirmé
 
Inscription : octobre 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 340
Points : 221
Points : 221
Envoyer un message via MSN à ideal23
la même chose que çà:

mais item_menu qui contenait les sous menus sont remplacés par un menu principal le premier.
ideal23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 18h05   #11
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 099
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 099
Points : 1 922
Points : 1 922
Cà, c'est le résultat, non la requête...

Tatayo.
tatayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 18h49   #12
Membre confirmé
 
Inscription : octobre 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 340
Points : 221
Points : 221
Envoyer un message via MSN à ideal23
Code :
1
2
3
4
5
6
7
SELECT *
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
ideal23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 19h14   #13
Membre confirmé
 
Inscription : octobre 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 340
Points : 221
Points : 221
Envoyer un message via MSN à ideal23
Merci encore, résultat

je n'ai plus les sous menus , par contre les menu principaux , c'est parfait
dans les 2 item_menu j'ai l'affichage des menu principaux
ideal23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 22h31   #14
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 099
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 099
Points : 1 922
Points : 1 922
Les titres de colonnes sont tronqués, difficile de se prononcer.
Si tu abandonnes la "guerre des étoiles", qu'est-ce que ça donne ?
Code SQL :
1
2
3
4
5
 
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

Tatayo.
tatayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 23h57   #15
Membre confirmé
 
Inscription : octobre 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 340
Points : 221
Points : 221
Envoyer un message via MSN à ideal23
Malheureusement, j'ai 2 fois les menus principaux et pas de sous menus
ideal23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2011, 14h03   #16
Membre confirmé
 
Inscription : octobre 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 340
Points : 221
Points : 221
Envoyer un message via MSN à ideal23
il faut peut-être faire 2 requêtes?
ideal23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 10h00   #17
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 099
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 099
Points : 1 922
Points : 1 922
Je suis plutôt perplexe. Je prends pour exemple le produit 10, donc ref_menu vaut 7.
Dans la requête:
m1.id_menu vaut articles.ref_menu, donc 7 => "carrelage terre cuite anti-dérapant"
m1.id_menu_dir vaut 2, donc m2.id_menu vaut 2 (via la condition de jointure)
m2.item_menu avec id_menu = 2 => "CARRELAGE EXTERIEUR"

Donc pour cet article, la requête doit renvoyer:
reference 10
titre novabel
description carrelage NOVABELL ...
m1.item_menu "carrelage terre cuite..."
m2.item_menu "CARRELAGE EXTERIEUR"

J'avoue que je ne vois pas pourquoi la base ne renvoie pas ce résultat, mais surtout je ne comprends pas comment cette requête peut renvoyer deux fois le menu principal, vu que l'id_menu de m1 est celui renseigné dans articles...

Il y a vraiment quelquechose qui m'échappe...

Petit test: quel est le résultat de cette requête :
Code SQL :
1
2
3
4
 
SELECT m1.item_menu,m2.item_menu
FROM menu m1
INNER JOIN menu m2 ON m2.item_menu_dir = m1.item_menu

Tatayo.
tatayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 13h36   #18
Membre confirmé
 
Inscription : octobre 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 340
Points : 221
Points : 221
Envoyer un message via MSN à ideal23
réponse:
Champ 'm2.item_menu_dir' inconnu dans on clause
ideal23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 13h49   #19
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 099
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 099
Points : 1 922
Points : 1 922
Effectivement, je me suis mélangé les pinceaux entre id_menu et item_menu...
Code SQL :
1
2
3
4
 
SELECT m1.item_menu,m2.item_menu
FROM menu m1
INNER JOIN menu m2 ON m2.id_menu_dir = m1.id_menu

Mais tu aurais pû corriger tout seul

Tatayo.
tatayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 14h00   #20
Membre confirmé
 
Inscription : octobre 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 340
Points : 221
Points : 221
Envoyer un message via MSN à ideal23
excuse-moi, çà me donne les item des sous menus
ideal23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h18.


 
 
 
 
Partenaires

Hébergement Web