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 :

2 jointures sur une meme table


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 38
    Points : 22
    Points
    22
    Par défaut 2 jointures sur une meme table
    Bonjour a tous.

    Je dois modifier une requête SQL (que je n'ais pas développer au départ) afin de lui faire sortir plus d'informations dans son résultat.

    Voici la requête en place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT VDI_SOCIETETH.CODE, VDI_CLIENTSOCIETE.CODESOCIETE, VDI_CLIENT.CODE, VDI_ADRESSETIERS.RAISONSOCIALE1, VDI_CLIENT.SIRET, VDI_CODEAPENAF.CODE, VDI_CLIENT.TVAID, VDI_CLIENTSOCIETE.BANQUEDOMICILIATION, VDI_CLIENTSOCIETE.BANQUECOMPTE, VDI_CLIENTSOCIETE.BANQUEGUICHET, VDI_CLIENTSOCIETE.BANQUEETAB, VDI_CLIENTSOCIETE.BANQUECLE, VDI_DEVISE.CODEISO, VDI_ADRESSETIERS.RAISONSOCIALE2, VDI_ADRESSETIERS.ADRESSE1, VDI_ADRESSETIERS.ADRESSE2, VDI_ADRESSETIERS.CODEPOSTAL, VDI_ADRESSETIERS.VILLE AS VILLE_CLT, VDI_PAYS.LIBELLE, VDI_CLIENT.TELEPHONE, VDI_CLIENT.TELECOPIE, VDI_CLIENT.INTERNETSITE, VDI_CLIENT.EMAIL, VDI_ACTIVITE.LIBELLE, VDI_CATEGORIECLIENT.LIBELLE, VDI_INTERLOCUTEURCLIENT.NOM, VDI_INTERLOCUTEURCLIENT.PRENOM, VDI_CLIENTSOCIETE.CREATIONDATE, VDI_CLIENTSOCIETE.MODIFDATESOCIETE, VDI_LANGUE.CODE, VDI_CONDITIONPAIEMENT.LIBELLE, VDI_MODEREGLEMENT.LIBELLE, VDI_CLIENTSOCIETE.ENCOURSMAXIMUMAUTORISE, VDI_ADRESSETIERS.VILLE AS VILLE_CIAL
    FROM (((((((((((VDI_CLIENTSOCIETE INNER JOIN VDI_CLIENT ON VDI_CLIENTSOCIETE.CLIENT = VDI_CLIENT.PK_CLIENT) INNER JOIN VDI_SOCIETETH ON VDI_CLIENTSOCIETE.SOCIETETH = VDI_SOCIETETH.PK_SOCIETETH) INNER JOIN VDI_ADRESSETIERS ON VDI_CLIENT.ADRESSERECH = VDI_ADRESSETIERS.PK_ADRESSETIERS) LEFT JOIN VDI_CODEAPENAF ON VDI_CLIENT.CODEAPENAF = VDI_CODEAPENAF.PK_CODEAPENAF) INNER JOIN VDI_DEVISE ON VDI_CLIENT.DEVISE = VDI_DEVISE.PK_DEVISE) INNER JOIN VDI_PAYS ON VDI_ADRESSETIERS.PAYS = VDI_PAYS.PK_PAYS) LEFT JOIN VDI_ACTIVITE ON VDI_CLIENTSOCIETE.ACTIVITE = VDI_ACTIVITE.PK_ACTIVITE) LEFT JOIN VDI_CATEGORIECLIENT ON VDI_CLIENTSOCIETE.CATEGORIE = VDI_CATEGORIECLIENT.PK_CATEGORIECLIENT) LEFT JOIN VDI_INTERLOCUTEURCLIENT ON VDI_CLIENTSOCIETE.COMMERCIAL = VDI_INTERLOCUTEURCLIENT.PK_INTERLOCUTEURCLIENT) LEFT JOIN VDI_LANGUE ON VDI_CLIENT.LANGUE = VDI_LANGUE.PK_LANGUE) INNER JOIN VDI_CONDITIONPAIEMENT ON VDI_CLIENTSOCIETE.CONDITIONPAIEMENT = VDI_CONDITIONPAIEMENT.PK_CONDITIONPAIEMENT) INNER JOIN VDI_MODEREGLEMENT ON VDI_CLIENTSOCIETE.MODEREGLEMENT = VDI_MODEREGLEMENT.PK_MODEREGLEMENT
    WHERE (((VDI_SOCIETETH.CODE)="1001PILES") AND ((VDI_CLIENT.TYPE)=1) AND ((VDI_CLIENT.DESACTIVE)=0));
    Mon problème est que je dois sortir la ville du client (la requête le fait déja) ET la ville de l'interlocuteur du client.

    La ville se trouve dans la table VDI_ADRESSETIERS et il doit y avoir une liaison avec la table VDI_INTERLOCUTEURCLIENT sur les champs PK_ADRESSETIERS et ADRESSE.

    J'ai vu sur le forum qu'il était possible de faire sa avec des alias. J'ai bien essayer mais je n'arrive pas à l'integrer dans la requête existante car je n'ais pas l'habitude de faire les jointure de cette manière (je les faits dans une clause WHERE habituellement).

    Voyez vous comment je pourrais faire?

    J'ai oublier de préciser que je travail sur une base oracle par le biais d'ACCESS 2003 via ODBC.

  2. #2
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    Points : 960
    Points
    960
    Par défaut
    Sur le principe, cela donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	VDI_ADRESSETIERS adtiers
    		inner join VDI_INTERLOCUTEURCLIENT cli1 on cli1.ADRESSERECH=adtiers.pk_adressetiers
    		inner join VDI_INTERLOCUTEURCLIENT cli2 on cli1.ADRESSERECH=adtiers.ADRESSE
    Cordialement
    Pinocchio
    La SNCF est mon ami
    blog PARIS-GRANVILLE
    Inscription au panel IPSOS (possibilité d'avoir des bons d'achats)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 38
    Points : 22
    Points
    22
    Par défaut
    Pour le principe il y a pas de problème, je l'avais vu dans d'autres posts du forum, seulement je n'arrive pas à intégrer la deuxième jointure parmis les autres jointures existantes.

    PS : je peut désormais utiliser SQLPlus, je ne suis plus obliger d'employer ACCESS

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

Discussions similaires

  1. Double jointure sur une meme table
    Par ecarbill dans le forum Requêtes
    Réponses: 7
    Dernier message: 17/02/2011, 18h36
  2. Plusieurs conditions sur une meme table (jointure)
    Par bugbug dans le forum Requêtes
    Réponses: 18
    Dernier message: 22/09/2009, 14h34
  3. [MySQL] Plusieurs jointures sur une même table
    Par stephyyr dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/06/2006, 14h24
  4. Association 1:n sur une meme table
    Par dafalcon dans le forum Décisions SGBD
    Réponses: 15
    Dernier message: 27/04/2005, 09h07
  5. jointure sur une même table
    Par guillaumeVb6 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 06/09/2004, 15h08

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