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] Jointure entre 2 tables et performances


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [SQL Server] Jointure entre 2 tables et performances
    Bonjour


    J'ai un probleme de construire une requete SQL.
    J'ai 2 tables avec des no factures, no clients, et montants.


    Une table (table_b) a des prevision et la seconds (table_a) a des factures definitives.


    Table: table_a
    no_fac numeric
    no_cli numeric
    mt numeric


    Table: table_b
    no_fac numeric
    no_cli numeric
    mt numeric




    Je voudrai avoir une requete qui fait un rapprochement entre ces 2 tables,
    Ma base de données est MS SQL 2000


    J'ai essayer cette requete, mais elle prend beaucoup trop de temps (plus de 29 sec. pour un client et d'un resultat de 6 lignes)


    select a.no_fac,a.no_cli,a.mt,b.no_fac as no_fac1,b.no_cli as no_cli1,b.mt as mt1
    from table_a a
    full outer join table_b b on a.no_fac=b.no_fac and a.no_cli=b.no_cli
    where a.no_cli=600 or b,no_cli=600


    Merci d'avance pour tout aide.


    Saluations




    Ralf

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Je n'ai pas la possibilité de tester puisqu'il faudrait une volumétrie importante pour constater des temps significatifs, mais as-tu essayé de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a.no_cli=600 or b.no_cli=600
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COALESCE(a.no_cl, b.no_cli) = 600

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    J'ai trouvé comment avoir une reponse immediat.

    select a.no_fac,a.no_cli,a.mt,b.no_fac as no_fac1,b.no_cli as no_cli1,b.mt as mt1
    from table_a a
    leftl outer join table_b b on a.no_fac=b.no_fac and a.no_cli=b.no_cli
    where a.no_cli=600
    union
    select a.no_fac,a.no_cli,a.mt,b.no_fac as no_fac1,b.no_cli as no_cli1,b.mt as mt1
    from table_a a
    rightl outer join table_b b on a.no_fac=b.no_fac and a.no_cli=b.no_cli
    where b.no_cli=600

    Merci pour le "COALESCE" il va me rendre service.

    Bye

    Ralf

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 902
    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 902
    Points : 53 143
    Points
    53 143
    Billets dans le blog
    6
    Par défaut
    faites plutôt un UNION ALL cela sera moins couteux !

    A +

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

Discussions similaires

  1. Jointure entre trois tables via SQL Developer
    Par mam51100 dans le forum Oracle
    Réponses: 4
    Dernier message: 25/01/2014, 10h20
  2. [SQL Server] Relations entre les tables ne s'affichent pas
    Par tssi555 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 19/11/2008, 15h55
  3. [SQL Server] Relations entre les tables
    Par tssi555 dans le forum VB.NET
    Réponses: 2
    Dernier message: 19/11/2008, 15h39
  4. [SQL] Jointure entre 3 tables
    Par bingo06260 dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/03/2008, 14h49
  5. [SQL Server] Filtré sur une table avant une jointure externe
    Par TangoZoulou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/11/2006, 15h52

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