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 :

Jointure entre 5 table g besoin d'aide svp


Sujet :

Langage SQL

  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 g besoin d'aide svp
    bonjour svp

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

    je ve trouver les enregistrement des champs :
    NPP_F, AL_INS_F, NRC, C_ACTIV, LCOM_F

    qui ce trouve ds les 5 table, sans les enregistrement qui existe dans la table RAD_INS

    j'ai fé comme suit mais ca 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
    meric pour votre aide d'avance.

  2. #2
    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,

    Qu'est-ce qui ne marche pas? Un message d'erreur?
    Essayez déjà de préfixer le nom des colonnes par les tables d'où elles proviennent.

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Voici la requête réécrite avec la syntaxe normalisée depuis 1992 pour les jointures :
    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
    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%'
      AND INSCR.C_INSC NOT EXISTS IN RAD_INS.C_INSC
    Ce qui ne va pas, c'est la dernière partie du WHERE !

    Il y a d'abord une condition de jointure qui impose l'égalité des colonnes C_INSC des tables INSCR et RAD_INS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INNER JOIN RAD_INS ON INSCR.C_INSC = RAD_INS.C_INSC
    Puis ensuite dans le WHERE vous demandez qu'il n'existe pas de valeur de C_INSC de la table INSCR dans la colonne C_INSC de la table RAD_INS.

    Ces deux conditions sont contradictoires, en dehors du fait que le NOT EXISTS est syntaxiquement faux !

  4. #4
    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
    merci touts le monde, 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 :

    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
    le 'NOT EXIST' est trais long
    merci beaucoup pour votre aide.

+ 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