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

InterBase Discussion :

jointure entre 5 table


Sujet :

InterBase

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Points : 6
    Points
    6
    Par défaut jointure entre 5 table
    jointure entre 5 table
    bonjour tout le monde: svp

    j'ai 5 tables :
    RC_PP, INSCR, PORTE_S, COMPAYS, RAD_INS

    je veux trouver les enregistrements des champs :
    NPP_F, AL_INS_F, NRC, C_ACTIV, LCOM_F

    qui se trouvent dans les 5 tables, sans les enregistrements qui existent dans la table RAD_INS

    j'ai fait comme suit mais ça ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT  NPP_F, AL_INS_F, NRC, C_ACTIV
     FROM RC_PP, INSCR, PORTE_S, COMPAYS, RAD_INS
     WHERE C_ACTIV LIKE  '%601301%' 
    AND RC_PP.NRC_PP = INSCR.NRC 
    AND PORTE_S.C_INSC= INSCR.C_INSC
    AND  COMPAYS.C_COM = INSCR.C_REG
    AND INSCR.C_INSC = RAD_INS.C_INSC
    AND INSCR.C_INSC NOT EXISTS IN RAD_INS.C_INSC
    merci pour votre aide d'avance.

  2. #2
    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
    Il faut utiliser des jointures normalisées
    je pense que si tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT  NPP_F, AL_INS_F, NRC, C_ACTIV
     FROM RC_PP 
     INNER JOIN INSCR ON RC_PP.NRC_PP = INSCR.NRC 
     INNER JOIN PORTE_S ON PORTE_S.C_INSC= INSCR.C_INSC
     INNER JOIN COMPAYS ON COMPAYS.C_COM = INSCR.C_REG
     INNER JOIN RAD_INS ON INSCR.C_INSC = RAD_INS.C_INSC
     WHERE C_ACTIV LIKE  '%601301%'
    Normalement cette requete te retournera tous les enregistrements des tables, sauf ceux pour lesquels il n'y a pas d'enregistrements dans RAD_INS correspondant a INSCR.C_INSC = RAD_INS.C_INSC

    Si ton besoin était inverse, il faudra plutot faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT  NPP_F, AL_INS_F, NRC, C_ACTIV
     FROM RC_PP 
     INNER JOIN INSCR ON RC_PP.NRC_PP = INSCR.NRC 
     INNER JOIN PORTE_S ON PORTE_S.C_INSC= INSCR.C_INSC
     INNER JOIN COMPAYS ON COMPAYS.C_COM = INSCR.C_REG
     LEFT JOIN RAD_INS ON INSCR.C_INSC = RAD_INS.C_INSC
     WHERE C_ACTIV LIKE  '%601301%'
    Avec un LEFT au lieu du INNER sur la dernière table

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    bonjour et merci pour votre réponse: c'est le deuxième code qui m'intéresse mais il faux qu'il m'affiche tout les enregistrement a part les donne de la table RAD_INS.
    je ve trier les donnée de sorte a ne pas sélectionner les donner qui ont leur clé primaire qui est 'C_INSC' dans la table 'RAD_INS' j'espère que c'est un peu clair.
    et encore merci.

  4. #4
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT  NPP_F, AL_INS_F, NRC, C_ACTIV
     FROM RC_PP 
     INNER JOIN INSCR ON RC_PP.NRC_PP = INSCR.NRC 
     INNER JOIN PORTE_S ON PORTE_S.C_INSC= INSCR.C_INSC
     INNER JOIN COMPAYS ON COMPAYS.C_COM = INSCR.C_REG 
     WHERE C_ACTIV LIKE  '%601301%'
     AND NOT EXISTS (SELECT 1 FROM RAD_INS WHERE RAD_INS.C_INSC = INSCR.C_INSC)
    cela devrait correspondre a ce que tu cherche.

    A+
    juva

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    c'est bon j'ai trouvé, grasse a ton code bien sur, la table RAD_INS à trois colonne : D_RAD, C_WIL, C_INSC,
    j'ai fait un test de 'NULL' sur la date et ca marche le résultat et toutes les donné sauf les donné qui existe dans la table RAD_INS.

    ca donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT  NPP_F, AL_INS_F, NRC, C_ACTIV
     FROM RC_PP 
     INNER JOIN INSCR ON RC_PP.NRC_PP = INSCR.NRC 
     INNER JOIN PORTE_S ON PORTE_S.C_INSC= INSCR.C_INSC
     INNER JOIN COMPAYS ON COMPAYS.C_COM = INSCR.C_REG
     LEFT JOIN RAD_INS ON INSCR.C_INSC = RAD_INS.C_INSC
     WHERE C_ACTIV LIKE  '%601301%'
     AND RAD_INS.D_RAD IS NULL
    merci beaucoup pour votre aide.

  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
    Le not exists aurait le même effet d'après moi

    Mais si ça te vas comme ça, c'est parfait

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    ton dernier code avec 'NOT EXISTS ', marche aussi trais bien sauf que le temps et trais long, avec le code 'IS NULL' ca marche tré bien.

    merci tu ma vraiment aider

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

Discussions similaires

  1. PROBLEME DE JOINTURE ENTRE DEUX TABLE
    Par DarkMax dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/01/2005, 15h11
  2. Jointure entre 3 tables
    Par zigune dans le forum Langage SQL
    Réponses: 9
    Dernier message: 15/11/2004, 16h04
  3. Jointure entre deux tables et résultat
    Par Asdorve dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/06/2004, 14h50
  4. [jointure]requete possible de double jointure entre 2 tables
    Par akira_le_gaucher dans le forum Langage SQL
    Réponses: 4
    Dernier message: 11/05/2004, 15h03
  5. Jointure entre 2 tables et OR
    Par PyRoFlo dans le forum Requêtes
    Réponses: 2
    Dernier message: 02/02/2004, 18h42

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