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 :

probleme jointure null


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut probleme jointure null
    Bonjour,

    On veut lister les contenus à partir des critères suivants:
    nom d'auteur,Fonction d'auteur, organisation d'auteur, libelle du contenu...

    vous trouvrez ci-joint la (petite) conception de ma base de données

    Voici la requette de ce besoin, mais ça marche pas trop bien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    select 
    tb_auteur.nom,tb_auteur.prenom,tb_auteur.fonction,tb_auteur.organisation,tb_motclet.libellemotclet,tb_contenu.id,tb_Information.valeur,
    tb_contenu.libelle,tb_contenu.type_contenu_id, tb_type_contenu.libelletypecontenu 
    from tb_contenu 
    INNER JOIN tb_motclet_contenu on tb_contenu.id=tb_motclet_contenu.contenu_id
    INNER JOIN tb_motclet on tb_motclet_contenu.motclet_id=tb_motclet.id 
    INNER JOIN tb_type_contenu on tb_type_contenu.id=tb_contenu. type_contenu_id 
    INNER JOIN tb_Information on tb_Information.contenu_id=tb_contenu.id
     
    INNER JOIN tb_auteur_contenu on tb_contenu.id= tb_auteur_contenu.contenu_id 
    INNER JOIN tb_auteur on tb_auteur.id= tb_auteur_contenu.auteur_id 
     
    and 
    tb_auteur.nom like '%?%' 
    and tb_auteur.prenom like '%?%' and tb_auteur.fonction like '%?%' and tb_auteur.organisation like '%?%' and tb_contenu.libelle like '%?%' and tb_motclet.libellemotclet like '%?%' and tb_type_contenu.libelletypecontenu like '%?%' and tb_Information.valeur like '%?%';

    Si vous avez d'autres suggestions ça m'aidrais beaucoup

    Merci d'avance.
    Images attachées Images attachées  

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut ----
    Salam,
    Essayez de reconstruire la requête en utilisant plusieurs sous requetes pour identifer le problème, il semble que tu as compliqué la requête
    d'autre part essayez la syntaxe avec where
    Bon chance

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Bonjour,
    Quel sgbd est utilisé?
    Ca ne marche pas trop bien, c'est vague. Deja, tb_motclet n'existe pas dans ton modèle, ce serait pas plutot tb_motcle?
    Ensuite, Utilise un WHERE pour les restrictions après tes jointures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    SELECT 
    tb_auteur.nom,tb_auteur.prenom,tb_auteur.fonction,tb_auteur.organisation,tb_motclet.libellemotclet,tb_contenu.id,tb_Information.valeur,
    tb_contenu.libelle,tb_contenu.type_contenu_id, tb_type_contenu.libelletypecontenu 
    FROM tb_contenu 
    INNER JOIN tb_motclet_contenu ON tb_contenu.id=tb_motclet_contenu.contenu_id
    INNER JOIN tb_motclet ON tb_motclet_contenu.motclet_id=tb_motclet.id 
    INNER JOIN tb_type_contenu ON tb_type_contenu.id=tb_contenu. type_contenu_id 
    INNER JOIN tb_Information ON tb_Information.contenu_id=tb_contenu.id
    INNER JOIN tb_auteur_contenu ON tb_contenu.id= tb_auteur_contenu.contenu_id 
    INNER JOIN tb_auteur ON tb_auteur.id= tb_auteur_contenu.auteur_id 
    WHERE tb_auteur.nom LIKE '%?%' 
    AND tb_auteur.prenom LIKE '%?%' 
    AND tb_auteur.fonction LIKE '%?%' 
    AND tb_auteur.organisation LIKE '%?%' 
    AND tb_contenu.libelle LIKE '%?%' 
    AND tb_motclet.libellemotclet LIKE '%?%' 
    AND tb_type_contenu.libelletypecontenu LIKE '%?%' 
    AND tb_Information.valeur LIKE '%?%';
    Ceci dit, je suis pas sûr que cette clause WHERE corresponde vraiment à quelque chose dont tu as besoin.
    Dernier point, en faisant des inner join entre toutes tes tables, il suffit qu'un contenu ne soit pas reférencé dans l'une des tables pour ne plus apparaitre dans ta selection, et je ne suis pas sur que ce soit ce que tu cherches. Essaie avec des LEFT JOIN.

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Est-ce que le ? correspond à un seul paramètre ou à plusieurs paramètres distincts ?
    Si c'est le premier cas, je verrai plutôt des OR dans le WHERE en lieu et places des AND.

  5. #5
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    A mon avis, c'est les deux soucis en même temps :

    mettre des OR et des LEFT

  6. #6
    Membre confirmé Avatar de juvamine
    Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2004
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2004
    Messages : 414
    Points : 502
    Points
    502
    Par défaut
    Tu ne dis pas quel est réellement ton problème, mais si ce sont vraiment les jointure de valeurs == NULL qui gène il faut faire des jointures du type:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     INNER JOIN tb_auteur
           ON     (tb_auteur.id= tb_auteur_contenu.auteur_id
               OR tb_auteur.id IS NULL
              AND tb_auteur_contenu.auteur_id IS NULL )

    et ce pour chaque jointure....mais je suis pas sur que ce soit l'objet de ton problème

  7. #7
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Une petite aparté dans la conception de votre modèle...

    Avez vous des tables de jointures pour vos relations de type n:m ?


Discussions similaires

  1. probleme jointure externe
    Par lazzeroni dans le forum Oracle
    Réponses: 1
    Dernier message: 24/05/2006, 10h38
  2. Probleme jointure d'une table sur elle même
    Par fred64 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 18/05/2006, 15h01
  3. Probleme de NULL avec LEFT OUTER JOIN
    Par jiluc dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/01/2006, 14h42
  4. Probleme jointure left
    Par lamoufle dans le forum Requêtes
    Réponses: 1
    Dernier message: 01/12/2005, 20h45
  5. probleme jointures
    Par blasted dans le forum ASP
    Réponses: 3
    Dernier message: 14/07/2005, 14h49

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