IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Résultat jointure avec champs null


Sujet :

Langage SQL

  1. #1
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    368
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 368
    Points : 289
    Points
    289
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 866
    Points
    12 866
    Par défaut
    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.

  3. #3
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    368
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 368
    Points : 289
    Points
    289
    Par défaut
    oui, je vois, mais je n'y arrive pas
    une image pour expliquer ma demande

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 866
    Points
    12 866
    Par défaut
    Un truc du genre:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  5. #5
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    368
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 368
    Points : 289
    Points
    289
    Par défaut
    Merci de ta réponse, il y a une petite erreur de syntaxe , je poursuis

  6. #6
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    368
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 368
    Points : 289
    Points
    289
    Par défaut
    Champ 'articles.ref_menu' inconnu dans on clause where, bizarre

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 866
    Points
    12 866
    Par défaut
    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.

  8. #8
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    368
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 368
    Points : 289
    Points
    289
    Par défaut
    ok mais je n'ai plus les sous menus et j'ai 1 seul menu principal, carrelage intérieur pour tous

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 866
    Points
    12 866
    Par défaut
    Sans voir la requête, difficile de dire ce qui ne va pas

    Tatayo.

  10. #10
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    368
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 368
    Points : 289
    Points
    289
    Par défaut
    la même chose que çà:

    mais item_menu qui contenait les sous menus sont remplacés par un menu principal le premier.

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 866
    Points
    12 866
    Par défaut
    Cà, c'est le résultat, non la requête...

    Tatayo.

  12. #12
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    368
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 368
    Points : 289
    Points
    289
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  13. #13
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    368
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 368
    Points : 289
    Points
    289
    Par défaut
    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

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 866
    Points
    12 866
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  15. #15
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    368
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 368
    Points : 289
    Points
    289
    Par défaut
    Malheureusement, j'ai 2 fois les menus principaux et pas de sous menus

  16. #16
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    368
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 368
    Points : 289
    Points
    289
    Par défaut
    il faut peut-être faire 2 requêtes?

  17. #17
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 866
    Points
    12 866
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  18. #18
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    368
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 368
    Points : 289
    Points
    289
    Par défaut
    réponse:
    Champ 'm2.item_menu_dir' inconnu dans on clause

  19. #19
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 866
    Points
    12 866
    Par défaut
    Effectivement, je me suis mélangé les pinceaux entre id_menu et item_menu...
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  20. #20
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    368
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 368
    Points : 289
    Points
    289
    Par défaut
    excuse-moi, çà me donne les item des sous menus

Discussions similaires

  1. jointure avec champ à null
    Par radahm dans le forum PL/SQL
    Réponses: 2
    Dernier message: 03/11/2009, 10h51
  2. Requete select : jointure avec champs null
    Par Tidus159 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 06/06/2008, 13h31
  3. Probleme jointure avec champs vides
    Par wylls dans le forum Requêtes
    Réponses: 3
    Dernier message: 04/02/2008, 23h42
  4. Entité avec champs à null retournée par Hibernate
    Par nicdo77 dans le forum Hibernate
    Réponses: 2
    Dernier message: 13/09/2007, 16h47
  5. Perte format avec champ null
    Par Lanig22 dans le forum Access
    Réponses: 4
    Dernier message: 07/02/2007, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo