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 :

Est-il possible de mettre 2 sous requetes en meme temps?


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 16
    Points : 12
    Points
    12
    Par défaut Est-il possible de mettre 2 sous requetes en meme temps?
    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
    SELECT  CLIENT_CR.CODE_CR, 
    		CLIENT_CR.NOM, 
    		CLIENT_CR.PRENOM, 
    		CLIENT_CR.CODE, 
    		DEBIT, 
    		CREDIT
    FROM   
    	CLIENT_CR INNER JOIN (SELECT SUM(FACTURE_RC.MONTANT) AS DEBIT, FACTURE_RC.CODE_CR
    							FROM FACTURE_RC
    							GROUP BY CODE_CR) FACT 
    				ON CLIENT_CR.CODE_CR = FACT.CODE_CR LEFT OUTER JOIN 
    						 (SELECT SUM(PAIEMENT.MONTANT) AS CREDIT, PAIEMENT.CODE_CR
    							FROM PAIEMENT
    							GROUP BY CODE_CR) PAI 
    				ON CLIENT_CR.CODE_CR = PAI.CODE_CR
    Je trouve pas où est l'erreur. Sql server 2005
    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
    Syntaxiquement il manque quelques alias ici et là, et au niveau de l'indentation ce n'est pas très lisible.

    Qu'est-ce qui ne va pas avec votre requête, elle ne s'exécute pas, elle ne renvoit pas les résultats attendus ?

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 16
    Points : 12
    Points
    12
    Par défaut Problème de windev
    La requete est juste mais c'est windev qui ne l'execute pas bien, je ne sais pas pourquoi. Excusez du dérangement. Au debut elle fonctionne mais le resultat du "CREDIT" qui est faux. ex Ca donne 595 4512,00 au lieu de 10 100,00. Mais maintenant ca va.
    Merci beaucoup.

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 16
    Points : 12
    Points
    12
    Par défaut Nouveau problem
    Ce serait aimable si quelqu'un peut corriger ou simplifier ou améliorer cette requete. Elle marche bien sous SQL SERVER MANAGEMENT STUDIO mais pas sur windev 11.

    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
    SELECT     CLIENT_CR.CODE_CR,
    CLIENT_CR.NOM, 
    CLIENT_CR.PRENOM, 
    CLIENT_CR.CODE, 
    FACT.DEBIT, 
    PAI.CREDIT
    FROM  CLIENT_CR LEFT JOIN (SELECT SUM(FACTURE_RC.MONTANT) AS DEBIT, 
    FACTURE_RC.CODE_CR
    FROM FACTURE_RC
    GROUP BY CODE_CR) AS FACT 
    ON CLIENT_CR.CODE_CR = FACT.CODE_CR LEFT JOIN
    (SELECT SUM(PAIEMENT.MONTANT) AS CREDIT, 
    PAIEMENT.CODE_CR
    FROM PAIEMENT
    GROUP BY CODE_CR) AS PAI 
    ON CLIENT_CR.CODE_CR = PAI.CODE_CR
    Merci de vos reponse

  5. #5
    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
    Je ne connais pas WINDEV, mais essayez avec LEFT OUTER JOIN plutôt que LEFT JOIN :
    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
    SELECT
        CL.CODE_CR,
        CL.NOM, 
        CL.PRENOM, 
        CL.CODE, 
        COALESCE(FC.DEBIT, 0) AS DEBIT,
        COALESCE(PA.CREDIT, 0) AS CREDIT
    FROM
        CLIENT_CR AS CL
        LEFT OUTER JOIN (
        SELECT CODE_CR, SUM(MONTANT) AS DEBIT, 
        FROM FACTURE_RC GROUP BY CODE_C) AS FA
          ON CL.CODE_CR = FA.CODE_CR
        LEFT OUTER JOIN (
        SELECT CODE_CR, SUM(MONTANT) AS CREDIT, 
        FROM PAIEMENT GROUP BY CODE_CR) AS PA
          ON CL.CODE_CR = PA.CODE_CR

  6. #6
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 16
    Points : 12
    Points
    12
    Par défaut Encore le probleme mais mieux qu'avant
    Merci M. Waldar
    Ca marche avec MS SQL Management Studio, mais COALESCE n'est pas supporté par windev. Dommage mais ca aurait pu m'aider.
    Voici votre code qui marche :
    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
     
    SELECT
        CL.CODE_CR,
        CL.NOM, 
        CL.PRENOM, 
        CL.CODE, 
        COALESCE(FA.DEBIT, 0) AS DEBIT,
    	COALESCE(PA.CREDIT, 0) AS CREDIT
    FROM
        CLIENT_CR AS CL
        LEFT OUTER JOIN 
        (SELECT FACTURE_RC.CODE_CR, SUM(FACTURE_RC.MONTANT) AS DEBIT 
         FROM FACTURE_RC GROUP BY CODE_CR) AS FA
          ON CL.CODE_CR = FA.CODE_CR
        LEFT OUTER JOIN 
    	(SELECT PAIEMENT.CODE_CR, SUM(PAIEMENT.MONTANT) AS CREDIT
         FROM PAIEMENT GROUP BY CODE_CR) AS PA
          ON CL.CODE_CR = PA.CODE_CR
    En attendant votre suggestion.

  7. #7
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 16
    Points : 12
    Points
    12
    Par défaut Precision
    Le but c'est d'avoir la somme des montants des factures dans DEBIT et la somme des montant des règlement dans
    CREDIT par client. Avec une connexion Sql server acces oledb Base SQL SERVER 2005.

    Merci de votre participation.

  8. #8
    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
    Je ne connais pas WINDEV, ses limitations SQL et cetera.
    Mais vous pouvez créer une vue pour cette requête et appeller cette dernière dans windev. Vous gardez ainsi l'intelligence au niveau de la base.

  9. #9
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 16
    Points : 12
    Points
    12
    Par défaut Resolu
    Salut,
    Tout marche très bien maintenant. Meme sans coalesce, ca marche bien.
    Pour windev, il faut executer le language sql sanscorrection et declarer la connexio.
    ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HExceuteRequeteSql("Nom_Requete","Nom_Connexion",HRequetesansCorrection,"Text Sql")
    Merci beaucoup pour ton aide Waldar.

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

Discussions similaires

  1. Est-t-il possible de mettre un sous-forum dans son tableau de bord ?
    Par sauros dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 1
    Dernier message: 17/05/2007, 16h34
  2. Réponses: 6
    Dernier message: 13/07/2006, 01h17
  3. Est il possible de mettre de la couleur?
    Par miron dans le forum C
    Réponses: 14
    Dernier message: 20/06/2006, 12h20
  4. Réponses: 2
    Dernier message: 02/02/2006, 09h07
  5. [debutant]Est-ce possible un tel resultat de requete???
    Par kenzo080 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/07/2005, 02h50

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