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 :

Deux inner join sur une même table


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Consultant communication & réseaux
    Inscrit en
    Mai 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant communication & réseaux

    Informations forums :
    Inscription : Mai 2014
    Messages : 31
    Points : 36
    Points
    36
    Par défaut Deux inner join sur une même table
    Bonjour,

    Je souhaiterai savoir comment faire 2 inner join de suite sur la même table, en effet quand j’exécute ma requête un message erreur me dit "The objects "algoCancerV1Diagnostics" and "algoCancerV1Diagnostics" in the FROM clause have the same exposed names. Use correlation names to distinguish them."

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    FROM [IDSD2012].[dbo].[sejoursMco]
    INNER JOIN [IDSD2012].[dbo].[diagnosticsAssociesMco] on [IDSD2012].[dbo].[sejoursMco].id = [IDSD2012].[dbo].[diagnosticsAssociesMco].sejourMco_id
    	INNER JOIN [algoCancerV1Diagnostics] on  [IDSD2012].[dbo].[diagnosticsAssociesMco].sejourMco_id = [dbo].[algoCancerV1Diagnostics].diagnostic_id
    	INNER JOIN  [algoCancerV1Diagnostics] on [IDSD2012].[dbo].[sejoursMco].diagnosticPrincipal = [dbo].[algoCancerV1Diagnostics].diagnostic_id
    Merci d'avance

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Il faut utiliser deux alias différents dans les deux jointures.

    Tatayo.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Consultant communication & réseaux
    Inscrit en
    Mai 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant communication & réseaux

    Informations forums :
    Inscription : Mai 2014
    Messages : 31
    Points : 36
    Points
    36
    Par défaut
    Salut !

    Excuse moi pour cette question débile mais je sui débutante et ne sais pas ce qu'est un alias ?

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 804
    Points
    30 804
    Par défaut
    Tu trouveras toutes les notions de base sur le SQL, et plus encore, dans ces tutoriels.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    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 : 60
    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 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Un alias sert :
    - à distinguer deux instances d'une même chose (deux tables, deux colonnes) - c'est le cas qui te préoccupe ;
    - à éviter d'écrire plein de fois des noms longs, ce qui en clarifie généralement la lecture de la requête.

    Ton morceau de requête pourrait ainsi s'écrire, en SQL standard, de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FROM [IDSD2012].[dbo].[sejoursMco] s
    INNER JOIN [IDSD2012].[dbo].[diagnosticsAssociesMco] d ON s.id = d.sejourMco_id
    	INNER JOIN [algoCancerV1Diagnostics] a1 ON  d.sejourMco_id = a1.diagnostic_id
    	INNER JOIN  [algoCancerV1Diagnostics] a2 ON s.diagnosticPrincipal = a2.diagnostic_id
    Mais en réalité tu n'as pas besoin de deux instances de la table [algoCancerV1Diagnostics]. Cette table est en quelque sorte la racine de l'arbre des jointures de ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FROM [algoCancerV1Diagnostics] a
    INNER JOIN 1 ON  d.sejourMco_id = a.diagnostic_id
    INNER JOIN [IDSD2012].[dbo].[sejoursMco] s ON s.diagnosticPrincipal = a.diagnostic_id
    	INNER JOIN [IDSD2012].[dbo].[diagnosticsAssociesMco] d ON s.id = d.sejourMco_id
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Consultant communication & réseaux
    Inscrit en
    Mai 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant communication & réseaux

    Informations forums :
    Inscription : Mai 2014
    Messages : 31
    Points : 36
    Points
    36
    Par défaut
    Un grand merci

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

Discussions similaires

  1. LEFT JOIN sur une même table
    Par grinder59 dans le forum Requêtes
    Réponses: 2
    Dernier message: 13/01/2012, 15h30
  2. Requete avec inner join sur une meme table
    Par mattmax dans le forum Développement
    Réponses: 1
    Dernier message: 15/12/2011, 14h34
  3. deux inner join sur une table
    Par the-player777 dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/11/2007, 09h43
  4. 2 LEFT JOIN sur une même table
    Par dakan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/10/2007, 13h51
  5. 3 Inner Join sur la même table
    Par Zolex dans le forum Requêtes
    Réponses: 6
    Dernier message: 23/05/2007, 12h32

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