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

Requêtes PostgreSQL Discussion :

Résultats différents selon ordre des jointures


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut Résultats différents selon ordre des jointures
    Bonjour à vous.
    Pouvez-vous me dire ce qui différencie ces deux requêtes...
    1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT 
      tetudiant.leprenom, 
      tetudiant.lenom
    from public.tannee inner join 
      public.tclasse on  tannee.idannee = tclasse.idannee
      inner join public.tniveau on  tniveau.idniveau = tclasse.idniveau
      inner join public.tinscription on  tclasse.idclasse = tinscription.idclasse
      inner join public.tcycle on  tcycle.idcycle = tniveau.idcycle
      inner join public.tspecialite on  tspecialite.idspecialite = tniveau.idspecialite
      inner join public.tfiliere on  tfiliere.idfiliere = tspecialite.idfiliere
      inner join public.tetudiant on tetudiant.idetudiant = tinscription.idetudiant
    sortie...
    "Aoua";"Coulibaly"
    "Kadiatou";"Coulibaly"
    "Bintou";"Dembélé"
    "Fatoumata";"Bagayoko"
    "Fanta";"Bouaré"
    "Amadou";"Bah"
    2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT 
      tetudiant.leprenom, 
      tetudiant.lenom
    FROM tinscription
     INNER JOIN tetudiant ON tetudiant.idetudiant = tinscription.idetudiant 
     INNER JOIN tclasse ON  tclasse.idclasse = tinscription.idclasse 
     INNER JOIN tniveau ON  tniveau.idniveau = tclasse.idniveau 
     INNER JOIN tcycle ON  tcycle.idcycle = tniveau.idcycle 
     INNER JOIN tannee ON  tannee.idannee = tclasse.idannee 
     INNER JOIN tspecialite ON  tniveau.idspecialite = tniveau.idspecialite 
     INNER JOIN tfiliere ON  tfiliere.idfiliere = tspecialite.idfiliere
    sortie (multiplie par 4 les lignes!)...
    "Aoua";"Coulibaly"
    "Aoua";"Coulibaly"
    "Aoua";"Coulibaly"
    "Aoua";"Coulibaly"
    "Kadiatou";"Coulibaly"
    "Kadiatou";"Coulibaly"
    "Kadiatou";"Coulibaly"
    "Kadiatou";"Coulibaly"
    "Bintou";"Dembélé"
    "Bintou";"Dembélé"
    "Bintou";"Dembélé"
    "Bintou";"Dembélé"
    "Fatoumata";"Bagayoko"
    "Fatoumata";"Bagayoko"
    "Fatoumata";"Bagayoko"
    "Fatoumata";"Bagayoko"
    "Fanta";"Bouaré"
    "Fanta";"Bouaré"
    "Fanta";"Bouaré"
    "Fanta";"Bouaré"
    "Amadou";"Bah"
    "Amadou";"Bah"
    "Amadou";"Bah"
    "Amadou";"Bah"
    Je ne sais pas ce qui m’échappe mais j'ai vraiment cherché.
    Merci d'avance.
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    Le cheminement n'est pas le même.

    Dans la première requete, tu pars de tannee et tu récupère tous les enregistrements de tannee avec un lien .....
    Dans la seconde requete tu récupère tous les enregistrements de tinscription avec un lien ....

    Probablement qu'en faisant le cheminement depuis tannée, tu touche moins d'enregistrement dans tinscription( ou ailleurs) que en partant directement de tinscription
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Il y a une erreur dans la seconde requête, avec un joli produit cartésien un peu vicieux, ligne #10 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INNER JOIN tspecialite ON  tniveau.idspecialite = tniveau.idspecialite

  4. #4
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    Grand merci à vous. je croyais y perdre mon SQL.
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/06/2015, 22h24
  2. Incidence de l'ordre des jointures externes
    Par shaoling dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/08/2010, 00h42
  3. Réponses: 5
    Dernier message: 22/08/2010, 14h54
  4. ordre des jointures
    Par looping dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/09/2008, 08h39
  5. [RegEx] Résultat différent selon le mode d'exécution de PHP
    Par mgauffeny dans le forum Langage
    Réponses: 2
    Dernier message: 30/07/2008, 15h41

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