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

SQL Firebird Discussion :

LEFT OUTER JOIN


Sujet :

SQL Firebird

  1. #1
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 737
    Par défaut LEFT OUTER JOIN
    Bonjour,

    j'un un petit soucis avec un left outer join.

    j'ai plusieurs tables qui ont la même clé étrangère mais Firebird ne me prend pas la bonne (enfin pas celle que je veux)

    Est ce que vous avez déjà eu ce problème (firebird 2.1.2) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       LEFT OUTER JOIN PARAM_SITE PS ON (PS.PS_ID = O.PS_ID)
       LEFT OUTER JOIN INDIVIDU I ON (O.IND_ID = I.IND_ID)
       LEFT OUTER JOIN EQUIPE E ON (I.EQ_ID = E.EQ_ID)
       LEFT OUTER JOIN INDIVIDU I2 ON (I2.IND_ID = AI.IND_ID)
       LEFT OUTER JOIN EQUIPE E2 ON (I2.EQ_ID = E2.EQ_ID)
    exemple pour le premier LEFT OUTER JOIN : il ne fait pas sur la table O spécifié mais sur la table I...

    Merci

  2. #2
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Bonjour,


    Votre requête va chercher (s'il existe)
    le param_site dont l'identifiant correspond à PS_ID de la table O

    l'Individu I dont l'identifiant correspond à IND_ID de la table O
    l'équipe qui correspond à l'individu I précédemment trouvé

    l'Individu I2 dont l'identifiant correspond à IND_ID de la table AI
    l'équipe qui correspond à l'individu I2 précédemment trouvé

    exemple pour le premier LEFT OUTER JOIN : il ne fait pas sur la table O spécifié mais sur la table I...
    I n'est pas dans la première jointure, je ne vois pas comment vous pouvez dire ca.

    si vous donniez la requête complète ça serait déjà plus parlant.

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 737
    Par défaut
    Votre requête va chercher (s'il existe)
    le param_site dont l'identifiant correspond à PS_ID de la table O

    l'Individu I dont l'identifiant correspond à IND_ID de la table O
    l'équipe qui correspond à l'individu I précédemment trouvé

    l'Individu I2 dont l'identifiant correspond à IND_ID de la table AI
    l'équipe qui correspond à l'individu I2 précédemment trouvé
    ça me rassure

    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
    19
    20
    21
    22
    23
    SELECT 
       O.ORD_NUM, M.MOD_DESCRIPT, PS.PS_NAME,
       I.IND_NAME||' '||I.IND_FNAME||' - '||I.IND_CODE AS ICREATOR, T.TEAM_NAME AS TCREATOR, O.ORD_DATE AS ORDER_DATE,
       I2.IND_NAME||' '||I2.IND_FNAME||' - '||I2.IND_CODE AS IRECEP, T2.TEAM_NAME AS TRECEP, OAI.ACTINDORDACT_DATE AS RECEP_DATE
    FROM
       ORDACTION OA, ORDACTIN OAI, MODELE M, MACTION A, ORDRE O, ACTIND AI
       LEFT OUTER JOIN PARAM_SITE PS ON (PS.PS_ID = O.PS_ID)
       LEFT OUTER JOIN INDIVIDU I ON (O.IND_ID = I.IND_ID)
       LEFT OUTER JOIN EQUIPE E ON (I.EQ_ID = E.EQ_ID)
       LEFT OUTER JOIN INDIVIDU I2 ON (I2.IND_ID = AI.IND_ID)
       LEFT OUTER JOIN EQUIPE E2 ON (I2.EQ_ID = E2.EQ_ID)
    WHERE
       O.ORD_DATE BETWEEN :DSTART AND :DEND
    AND
       OA.ORD_ID = O.ORD_ID
    AND
       OAI.ORDACT_ID = OA.ORDACT_ID
    AND
       OAI.ACTIND_ID = AI.ACTIND_ID
    AND
       AI.ACT_ID = A.ACT_ID
    AND
       O.MOD_ID = M.MOD_ID
    le resultat par contre n'est pas comme ce que nous pensons et c'est ce qui m'inquiète !

  4. #4
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Essayez :
    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 
       O.ORD_NUM, M.MOD_DESCRIPT, PS.PS_NAME,
       I.IND_NAME||' '||I.IND_FNAME||' - '||I.IND_CODE AS ICREATOR, T.TEAM_NAME AS TCREATOR, O.ORD_DATE AS ORDER_DATE,
       I2.IND_NAME||' '||I2.IND_FNAME||' - '||I2.IND_CODE AS IRECEP, T2.TEAM_NAME AS TRECEP, OAI.ACTINDORDACT_DATE AS RECEP_DATE
    FROM
       MODELE M
       inner join ORDRE O on O.MOD_ID = M.MOD_ID 
       inner join ORDACTION OA on OA.ORD_ID = O.ORD_ID
       inner join ORDACTIN OAI on OAI.ORDACT_ID = OA.ORDACT_ID 
       inner join ACTIND AI on OAI.ACTIND_ID = AI.ACTIND_ID
       inner join MACTION A on AI.ACT_ID = A.ACT_ID
       LEFT OUTER JOIN PARAM_SITE PS ON (PS.PS_ID = O.PS_ID)
       LEFT OUTER JOIN INDIVIDU I ON (O.IND_ID = I.IND_ID)
       LEFT OUTER JOIN EQUIPE E ON (I.EQ_ID = E.EQ_ID)
       LEFT OUTER JOIN INDIVIDU I2 ON (I2.IND_ID = AI.IND_ID)
       LEFT OUTER JOIN EQUIPE E2 ON (I2.EQ_ID = E2.EQ_ID)
    WHERE
       O.ORD_DATE BETWEEN :DSTART AND :DEND

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 737
    Par défaut
    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de NULL avec LEFT OUTER JOIN
    Par jiluc dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/01/2006, 14h42
  2. Bug LEFT OUTER JOIN Firebird
    Par Fabio2000 dans le forum SQL
    Réponses: 3
    Dernier message: 21/11/2005, 09h08
  3. Problème avec left outer join
    Par jgfa9 dans le forum Requêtes
    Réponses: 1
    Dernier message: 22/08/2005, 21h07
  4. Problème de performance avec LEFT OUTER JOIN
    Par jgfa9 dans le forum Requêtes
    Réponses: 6
    Dernier message: 17/07/2005, 13h17
  5. concatenation de chaine dans un left outer join
    Par the_edge dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/11/2004, 16h08

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