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. #21
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 242
    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 242
    Points : 12 874
    Points
    12 874
    Par défaut
    Là, il y a comme un gros problème.
    Ce résultat n'est pas possible, compte tenu des éléments que tu nous as fournis.
    En effet, la requête doit renvoyer pour m1 les seuls lignes de la table menu pour lesquels il existe au moins une ligne dans m2 pour laquelle m2.id_menu_dir = m1.id_menu, c'est à dire les lignes pour lesquelles id_menu vaut soit 1, soit 2, soit 3.
    Or dans le résultat que tu nous montres, c'est exactement l'inverse !

    On va "décomposer" la requête pour savoir où se trouve le problème.
    Est-ce que tu peux nous donner le résultat de ces trois requêtes ?
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from articles where reference = 10

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from menu where id_menu = 7

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from menu where id_menu = 2

    Le première doit renvoyer les données de l'article 10, "carrelage novabell en 30x30" dont ref_menu qui vaut 7

    La deuxième va chercher le menu correspondant (id = 7), soit "carrelage terre cuite anti-dérapant", dont id_menu_dir vaut 2

    La troisième va chercher le menu correspondant (id = 2), soit "CARRELAGE EXTERIEUR"

    Tatayo.

    P.S. à moins que le SGBD utilisé soit perturbé par les null... Quel est-il ?

  2. #22
    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
    Avec un peu d'aide, je crois que cette requête, va le faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    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
    Merci beaucoup, tatayo pour ta participation et ta ténacité.

  3. #23
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 242
    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 242
    Points : 12 874
    Points
    12 874
    Par défaut
    En réécrivant les jointures avec la "nouvelle" norme, ça donne:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT titre,m1.item_menu AS 'menu parent', m2.item_menu AS 'menu enfant'
    FROM articles
    inner join menu m2 on articles.ref_menu=m2.id_menu
    inner join menu m1 on m1.id_menu=m2.id_menu_dir

    Ce qui rensemble furieusement à la requête que j'avais donnée...

    Tatayo.

  4. #24
    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, c'est vrai,
    une question : peut-on passer une variable d'url avec $_GET facilement pour afficher le résultat du menu à chaque clique.
    exemple :pour carrelage intérieur et les 2 sous menus, affichage des 4 données de la table articles.

  5. #25
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 101
    Points : 28 398
    Points
    28 398
    Par défaut
    Cette dernière question n'a aucun rapport avec le langage SQL

  6. #26
    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
    ah bon, mais comment on fait alors svp Merci.

  7. #27
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Tu devrais poser cette question dans le bon forum, tu aurais plus facilement des réponses...

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