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 :

[SQL Server] 2 tables jointes: extraire 2 libellés dont les codes sont dans 1 table


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut [SQL Server] 2 tables jointes: extraire 2 libellés dont les codes sont dans 1 table
    Bonsoir,
    J’ai deux tables :
    Reclamation avec les champs : NRecl, Nexp, NDes
    Entite avec les champs : NEntite, Libelle

    NExp et NDes sont des entités, j’aimerai que leurs libellés apparaissent à partir d’une requete.

    Début requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT     R.NExpediteur, E.NEntite, E.Nom as Expediteur,R.NDestinateur
    FROM         dbo.TReclamations R, TEntites E
    WHERE          R.NDestinateur = E.NEntite
    Comment faire pour afficher ces libellés ?
    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 100
    Par défaut
    Bonjour,

    Essaie de double l'utilisation de la table TEntites.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT e1.nom AS Destinataire, e2.nom AS Expediteur
    FROM TReclamations r, TEntites e1, TEntites e2
    WHERE r.ndest = e1.nentite
    AND r.nexp = e2.nentite
    PS:J'ai pas essayé

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Essayez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT R.NExpediteur, E1.NEntite, E1.Libelle AS Expediteur, E2.NEntite, E2.Libelle AS Destinataire
    FROM         dbo.TReclamations R, TEntites E1, TEntites E2
    WHERE        R.NDestinateur = E1.NEntite
    AND          R.NExpediteur = E2.NEntite
    Cependant, quelques remarques :
    - votre syntaxe est complètement obsolète
    - si TReclamations.NDestinateur ou TReclamations.NExpediteur est NULL alors la ligne complète ne sera pas retournée ; il faudrait remplacer les 2 jointures ci-dessus par 2 jointures externes

  4. #4
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    c'est vrai que le résulta est exact.

    Comment faire pour 2 jointures externes?
    si TReclamations.NDestinateur ou TReclamations.NExpediteur est NULL alors la ligne complète ne sera pas retournée ; il faudrait remplacer les 2 jointures ci-dessus par 2 jointures externes

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    pour faire la jointure externe j'ai mis le (+)
    mais il ya une erreur. j'utilise ms sql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT R.NExpediteur, E1.NEntite, E1.Nom AS Expediteur, E2.NEntite, E2.Nom AS Destinataire
    FROM         dbo.TReclamations R, TEntites E1, TEntites E2
    WHERE        R.NDestinateur(+) = E1.NEntite
    AND          R.NExpediteur = E2.NEntite

  6. #6
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    j'ai essayé de faire la jointure externe, mais c'est Sans succès!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT TReclamations.NExpediteur, E1.NEntite, E1.Nom AS Expediteur, TReclamations.NDestinateur,E2.NEntite, E2.Nom AS Destinataire
    FROM   TReclamations  LEFT OUTER JOIN TEntites E2
    ON       TReclamations.NDestinateur = E2.NEntite
          LEFT  OUTER JOIN TReclamations.NExpediteur
                ON TReclamations.NExpediteur = E1.NEntite

  7. #7
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    C'eest résolu!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT TReclamations.NExpediteur, E1.NEntite, E1.Nom AS Expediteur,TReclamations.NDestinateur,E2.NEntite, E2.Nom AS Destinataire
    FROM   TReclamations
           LEFT  OUTER JOIN TEntites E1
                ON TReclamations.NExpediteur = E1.NEntite
           LEFT  OUTER JOIN TEntites E2
                ON TReclamations.NDestinateur = E2.NEntite
    Merci encore!

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Par défaut Ce que j'essaierais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT     R.NExpediteur, 
     
    ( Select Nom from TEntites where NEntite = R.NExpediteur )  AS Expediteur,
     
    R.NDestinateur, 
     
    ( Select Nom from TEntites where NEntite = R.NDestinateur )  AS Destinataire
     
    FROM         TReclamations R

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

Discussions similaires

  1. [PowerShell] Enregistrer les programmes installés dans une table sql server
    Par Seriale dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 10/02/2014, 13h23
  2. modifier des tables dont les noms sont dans une autre
    Par lapin_did dans le forum Requêtes
    Réponses: 1
    Dernier message: 06/09/2010, 09h45
  3. Réponses: 7
    Dernier message: 05/09/2008, 11h07
  4. Réponses: 11
    Dernier message: 18/10/2007, 12h49
  5. Réponses: 10
    Dernier message: 16/09/2006, 11h41

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