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
    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
    Invité de passage
    Inscrit en
    Avril 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 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 émérite
    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
    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 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 454
    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 Expert
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

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

    mettre des OR et des LEFT

  6. #6
    Membre éclairé 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
    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 : 45
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    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 ?

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



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