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 :

Différence de calcul entre deux techniques de jointure


Sujet :

Langage SQL

  1. #1
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 062
    Points
    6 062
    Par défaut Différence de calcul entre deux techniques de jointure
    Bonjour,
    J'aurais voulu savoir si dans Sybase ces deux requêtes équivalent en terme de résultat sont traité de la même manière.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT * FROM maTable1, maTable2
    WHERE maTable1.monChamp = maTable2.monChamp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM maTable1
      INNER JOIN maTable2
        ON maTable1.monChamp = maTable2.monChamp
    En faite, je cherche les arguments béton.

    Merci

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    C'est pareil.
    Pour les arguments bétons, se référer à la norme SQL-92.

  3. #3
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 062
    Points
    6 062
    Par défaut
    Citation Envoyé par Waldar Voir le message
    C'est pareil.
    Pour les arguments bétons, se référer à la norme SQL-92.
    Merci

  4. #4
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 062
    Points
    6 062
    Par défaut
    Bonjour,
    Je reviens sur ça parce que je suis tombé sur un cas ou ces deux types de jointure ne donne pas forcément le même résultat.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * T_1 AS T1
      LEFT JOIN T_2 AS T2
        ON T1.C1 = T2.C1
    Dans le cas si dessus, si dans T_1.C1 il y a une valeur null alors elle ramene aucune ligne. Alors que la requette c-dessous oui.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM T1,T2
    WHERE T1.C1 *= T2.C1

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bah c'est normal c'est une jointure externe vs jointure interne.
    http://sqlpro.developpez.com/cours/sqlaz/jointures/

  6. #6
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    La syntaxe pour les jointures externes c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM A
        LEFT OUTER JOIN B
        ON A.id = B.id

  7. #7
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 062
    Points
    6 062
    Par défaut
    Citation Envoyé par lola06 Voir le message
    La syntaxe pour les jointures externes c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM A
        LEFT OUTER JOIN B
        ON A.id = B.id
    il me semble que LEFT JOIN et LEFT OUTER JOIN soit la même chose.

  8. #8
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 062
    Points
    6 062
    Par défaut
    Citation Envoyé par punkoff Voir le message
    bah c'est normal c'est une jointure externe vs jointure interne.
    http://sqlpro.developpez.com/cours/sqlaz/jointures/
    Non, j'ai placé une étoile dans la jointure.

  9. #9
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    La syntaxe LEFT JOIN n'est pas du tout normalisée, je ne l'ai vu sur aucun cours.

    Pour info j'utilise régulièrement LEFT OUTER JOIN et mes requêtes me renvoient bien mes lignes avec des valeurs nulles.

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 849
    Points : 52 975
    Points
    52 975
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par lola06 Voir le message
    La syntaxe LEFT JOIN n'est pas du tout normalisée, je ne l'ai vu sur aucun cours.

    Pour info j'utilise régulièrement LEFT OUTER JOIN et mes requêtes me renvoient bien mes lignes avec des valeurs nulles.
    Alors vous avez lus des mauvais cours, et eut des mauvais professeurs, car le mot clef OUTER, comme le mot clef INNER est facultatif dans la clause de jointure.
    Offre-vous donc mon bouquin !
    Cela dit je suis contre la simplification par élision du type de JOIN.


    Citation Envoyé par berceker united Voir le message
    Bonjour,
    Je reviens sur ça parce que je suis tombé sur un cas ou ces deux types de jointure ne donne pas forcément le même résultat.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * T_1 AS T1
      LEFT JOIN T_2 AS T2
        ON T1.C1 = T2.C1
    Dans le cas si dessus, si dans T_1.C1 il y a une valeur null alors elle ramene aucune ligne. Alors que la requette c-dessous oui.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM T1,T2
    WHERE T1.C1 *= T2.C1
    Normal, la jointure externe Sybase est mathématiquement fausse. J'ai donné une explication :
    http://blog.developpez.com/sqlpro/p5...-et-le-nouvea/

    Pour une conversion des jointures externes Sybase vers la norme SL, lire l'article d'Arian Papillon:
    http://blog.datafly.pro/post/2011/06...ntures-ANSI-89

    A +

  11. #11
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 062
    Points
    6 062
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Alors vous avez lus des mauvais cours, et eut des mauvais professeurs, car le mot clef OUTER, comme le mot clef INNER est facultatif dans la clause de jointure.
    Offre-vous donc mon bouquin !
    Cela dit je suis contre la simplification par élision du type de JOIN.




    Normal, la jointure externe Sybase est mathématiquement fausse. J'ai donné une explication :
    http://blog.developpez.com/sqlpro/p5...-et-le-nouvea/

    Pour une conversion des jointures externes Sybase vers la norme SL, lire l'article d'Arian Papillon:
    http://blog.datafly.pro/post/2011/06...ntures-ANSI-89

    A +
    Merci pour cette information. Actuellement, je modifie parfois les requêtes pour le mettre à la norme, mais je me rend compte que ce n'est pas aussi simple. (Sybase 12.5)

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

Discussions similaires

  1. calculer la différence en pourcentage entre deux champs sql
    Par sihammaster dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 05/07/2011, 17h48
  2. Réponses: 2
    Dernier message: 14/04/2011, 15h23
  3. Calcule la différence de jours entre deux dates
    Par clement106 dans le forum Langage
    Réponses: 2
    Dernier message: 15/04/2010, 21h13
  4. [Dates] Calculer différence en jours entre deux dates
    Par looping2b2a dans le forum Langage
    Réponses: 4
    Dernier message: 29/12/2006, 23h32

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