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 :

[MSSQL 2K5] PBM pour mixer deux requêtes en une seule


Sujet :

Langage SQL

  1. #1
    Membre du Club Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Points : 54
    Points
    54
    Par défaut [MSSQL 2K5] PBM pour mixer deux requêtes en une seule
    Hello,

    J'ai les deux requêtes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select * from categorie
     
    left join ressource on ressource.idcategorie=categorie.idcategorie
    left join feuilleheure on feuilleheure.idressource=ressource.idressource
     
    where feuilleheure.idaffaire=10001
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select * from categorie
     
    left join budget on budget.idcategorie=categorie.idcategorie
     
    where budget.idaffaire=10001
    Et j'aimerais ne faire qu'une seule requête qui me donne en une fois les résultats des deux tables.

    Je ne parviens pas à trouver une syntaxe de jointure correcte.

    En fait, il s'agit de migrer un report qui pointait sur une base Paradox, vers une base MSSQL. Crystal Report avait réussi a générer une syntaxe PDX qui fonctionnait bien, mais depuis que la base est en SQL Server, CR fait n'importe quoi, alors j'essaie d'abord de trouver une syntaxe qui tourne à la main, avant de la mettre en CR.

    Merci d'avance.
    Postes Dév : W7 SP1 / Windev 21 / Delphi 7 Entreprise
    Serveur : W2k12 SP1 + SQL 2014 RC2
    Connexion : OLE.DB

  2. #2
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    Il nous faut un exemple de ce que tu attends.

    Je suppose que tu ne peux pas juste ajouter la troisième jointure à la requête pour une question de cardinalité...

    Dans ce cas, il faut savoir quelles lignes doivent être jointes !

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  3. #3
    Membre du Club Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Points : 54
    Points
    54
    Par défaut
    Voici une extraction du détail dans Crystal Report, j'ai ajouté les noms des colonnes, avec BG = table Budget, RE = table Ressource et FH=table FeuillHeure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    BG.idcategorie	 RE.idcategorie       BG.Montant  FH.Tauxhorraire
     
           		    	 1 		  0.0073.101 		  0.0073.101 		  0.00146.201 		  0.00146.20102       				725.700.00102       				534.700.0019  		  0.000.0019  		  0.00250.0019  		  0.00240.77114  		  0.000.0018  	 	  0.00717.0018  	 	  0.00843.2518  	 	  0.00843.2518  	 	  0.00717.0018  	 	  0.00843.2518  	 	  0.00515.0018  	 	  0.00843.2518  		  0.00717.0018  		  0.00717.0018  		  0.00742.2518  		  0.00717.00
    Postes Dév : W7 SP1 / Windev 21 / Delphi 7 Entreprise
    Serveur : W2k12 SP1 + SQL 2014 RC2
    Connexion : OLE.DB

  4. #4
    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
    Avec un UNION ALL probablement, mais il faudra faire le sort de vos select *.

  5. #5
    Membre du Club Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Points : 54
    Points
    54
    Par défaut
    Trier les records n'est pas un soucis.

    La seule requête que j'ai reussi à faire tourner est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    select * from categorie
     
    left join budget on budget.idcategorie=categorie.idcategorie
    left join ressource on ressource.idcategorie=categorie.idcategorie
    left join feuilleheure on feuilleheure.idressource=ressource.idressource
     
     
    where (budget.idaffaire=10001  or budget.idaffaire is null )
    and (feuilleheure.idaffaire=10001 or feuilleheure.idaffaire is null)
    Mais ça ne me retourne pas les bons résultats.

    A partir de là, si je remplace n'importe que left join par un union all, j'ai une erreur.
    Postes Dév : W7 SP1 / Windev 21 / Delphi 7 Entreprise
    Serveur : W2k12 SP1 + SQL 2014 RC2
    Connexion : OLE.DB

  6. #6
    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
    Je vous l'ai dit, utilisez UNION ALL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT null, ct.idcategorie, 0, fh.Tauxhorraire
      FROM categorie as ct
           INNER JOIN ressource as re
             ON re.idcategorie = ct.idcategorie
           INNER JOIN feuilleheure as fh
             ON fh.idressource = re.idressource
     WHERE fh.idaffaire = 10001
     UNION ALL
    SELECT ct.idcategorie, null, bg.Montant, 0
      FROM categorie as ct
           INNER JOIN budget as bg
             ON bg.idcategorie = ct.idcategorie
     WHERE bg.idaffaire = 10001;

  7. #7
    Membre du Club Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Points : 54
    Points
    54
    Par défaut
    ah oui, comme ça !
    ben, fallait savoir, hein.

    bon, les résultats sont corrects, plus qu'à traduire ça en organigramme CR.

    Merci.
    Postes Dév : W7 SP1 / Windev 21 / Delphi 7 Entreprise
    Serveur : W2k12 SP1 + SQL 2014 RC2
    Connexion : OLE.DB

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

Discussions similaires

  1. Deux requêtes dans une seule requête, est-ce possible ?
    Par Stephane_br dans le forum Développement
    Réponses: 3
    Dernier message: 08/07/2011, 15h35
  2. Deux requêtes en une seule?
    Par pcsystemd dans le forum Requêtes
    Réponses: 5
    Dernier message: 09/07/2009, 16h28
  3. Somme de deux requête en une en sql/access
    Par thepunky89 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/09/2007, 14h31
  4. Problème pour modifier la requête d'une datawindow
    Par cdtpwb dans le forum Powerbuilder
    Réponses: 4
    Dernier message: 05/09/2007, 14h07
  5. Mixer deux requêtes
    Par WriteLN dans le forum Requêtes
    Réponses: 3
    Dernier message: 14/11/2005, 09h34

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