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

WinDev Discussion :

Syntaxe Requete SQL [WD12]


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Inscrit en
    Avril 2008
    Messages
    1 133
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1 133
    Par défaut Syntaxe Requete SQL
    Bonjour à tous!

    Je suis désolé de vous importuner avec cette demande car j'aurais pu la faire avec l'éditeur en 2 requêtes, mais je trouve la requête SQL (que je viens de découvrir) tellement plus élégante

    J'ai un fichier BonLivraison avec les rubriques NumBL (clé unique) et TotalTTC(Montant BL)

    J'ai un un second fichier Reglement avec les rubriques NumBL (doublons) et Montant(Montant du reglement)

    Je souhaiterai pour un NumBL donné, connaitre le montant total des règlements de ce BL

    Ce code n'a pas l'air de fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    L_phraseSQL est une chaîne
            L_phraseSQL+="SELECT "
            L_phraseSQL+="BonLivraison.NumBL," 
            L_phraseSQL+="BonLivraison.TotalTTC," 
            L_phraseSQL+="Reglement.Montant"+RC 
            L_phraseSQL+="FROM Reglement"+RC
            L_phraseSQL+="JOIN BonLivraison ON (BonLivraison.NumBL=Reglement.NumBL)"
            L_phraseSQL+=" WHERE "
            L_phraseSQL+=" BonLivraison.NumBL ="+COL_NumBL
    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 458
    Par défaut
    Bonjour,
    Comme NumBL dans la table des règlement est une clé avec Doublon, j'en déduis que tu peux avoir plusieurs règlement par BL.
    Donc tu dois faire la somme des règlements:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT
    BonLivraison.NumBL
    BonLivraison.TotalTTC
    sum(Reglement.Montant)
    FROM Reglement
    LEFT OUTER JOIN BonLivraison ON (BonLivraison.NumBL=Reglement.NumBL)
    WHERE BonLivraison.NumBL = %1
    GROUP BY BonLivraison.NumBL,BonLivraison.TotalTTC

    J'ai utilisé une jointure externe pour gérer le cas d'un BL sans règlement.

    Tatayo.

    P.S. et un gros +1 pour le SQL

  3. #3
    Membre émérite
    Inscrit en
    Avril 2008
    Messages
    1 133
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1 133
    Par défaut
    Propre Nickel Chrome Tatayo

    Toutefois Une petite question sur la jointure externe:
    Que veux tu dire par : Le cas d'un BL sans reglement.

    Car la requete ne renvoie aucun résultat dans ce cas là.
    Est il possible qu'il donne un résultat meme sí sum(Reglement.Montant)=0 ?
    Ceci pour m'éviter de relire et récupérer BonLivraison.TotalTTC

    Merci pour tout

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Par défaut
    Bonjour,

    dans ce que tu demandes, je pense qu'il vaut mieux partir du BL et chercher ses règlements:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT
    BonLivraison.NumBL,
    BonLivraison.TotalTTC,
    sum(Reglement.Montant)
    FROM BonLivraison INNER JOIN Reglement ON (BonLivraison.NumBL=Reglement.NumBL)
    WHERE BonLivraison.NumBL = %1
    Si aucun Reglement, l'instruction sum devrait renvoyer null ou 0 selon la base.

    à bientôt,

    Nicolas

  5. #5
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 458
    Par défaut
    Oups, je me suis effectivement trompé dans l'ordre des tables...

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT
    BonLivraison.NumBL,
    BonLivraison.TotalTTC,
    sum(Reglement.Montant)
    FROM BonLivraison
    LEFT OUTER JOIN Reglement ON (BonLivraison.NumBL=Reglement.NumBL)
    WHERE BonLivraison.NumBL = %1

    Par contre il faut bien passer par une jointure externe, sinon les BL sans règlement ne sortent pas, quelle que soit la base de données.

    Tatayo.

  6. #6
    Membre émérite
    Inscrit en
    Avril 2008
    Messages
    1 133
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1 133
    Par défaut
    Salut!
    Perfecto

    Effectivement il faut le LEFT OUTER JOIN

    Merci !

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2002
    Messages : 899
    Par défaut
    Bonjour,

    Je n'ai pas vraiment suivi tout le post, mais juste une petite remarque sur ce code que tu as posté au départ :
    Citation Envoyé par zouzoukha Voir le message
    Ce code n'a pas l'air de fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    L_phraseSQL est une chaîne
            L_phraseSQL+="SELECT "
            L_phraseSQL+="BonLivraison.NumBL," 
            L_phraseSQL+="BonLivraison.TotalTTC," 
            L_phraseSQL+="Reglement.Montant"+RC 
            L_phraseSQL+="FROM Reglement"+RC
            L_phraseSQL+="JOIN BonLivraison ON (BonLivraison.NumBL=Reglement.NumBL)"
            L_phraseSQL+=" WHERE "
            L_phraseSQL+=" BonLivraison.NumBL ="+COL_NumBL
    Tu peux aussi écrire ça avec les crochets, c'est plus lisible
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    L_phraseSQL = [
    SELECT ...
    FROM ...
    INNER JOIN ...
    --et tout ça sur plusieurs lignes
    --avec même la possibilité de mettre des commentaires dans le milieu du SQL
    WHERE ...
    ]
    Voila, c'était ma minute utile (enfin je l'espère)

  8. #8
    Membre émérite
    Inscrit en
    Avril 2008
    Messages
    1 133
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1 133
    Par défaut
    Très très utile pour un débutant comme moi
    Merci Bowen.
    Je m'entraine en ce moment avec comme objectif : 0 requete éditeur

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

Discussions similaires

  1. syntax requete sql
    Par gyver4000 dans le forum VB.NET
    Réponses: 11
    Dernier message: 05/12/2011, 09h53
  2. syntaxe requete sql
    Par djolah13 dans le forum Langage
    Réponses: 10
    Dernier message: 14/06/2011, 16h39
  3. Syntaxe requete sql UNION dans le code VBA
    Par fisio dans le forum VBA Access
    Réponses: 3
    Dernier message: 15/11/2010, 13h44
  4. Réponses: 6
    Dernier message: 12/02/2009, 22h47
  5. Syntaxe requete SQL insert into dans VBA
    Par @rkane dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 12/12/2006, 22h03

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