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 :

[WD12] Demande d'aide pour concevoir ma requête


Sujet :

WinDev

  1. #1
    Membre régulier Avatar de tom06440
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 150
    Points : 102
    Points
    102
    Par défaut [WD12] Demande d'aide pour concevoir ma requête
    Bonjour,

    J'aimerais avoir de l'aide sur la création d'une requête sur Windev 12

    Cette requête porte sur 3 tables : cli , factdetails , factreglements

    j'aimerais récupérer des valeurs de la table "factdetails" puis des valeurs de la table "cli" à l'aide d'une clé commune (factdetails.idcli = cli.id)

    jusque la rien de très compliqué puis j'y arrive très bien mais je bloque avec la 3ème table
    j'aimerais faire une somme sur une colonne de la table "factreglements"
    en sachant que cette table peut contenir ou non des informations liées à factdetails

    si dans "factreglements" j'ai bien des enregistrements liés avec "factdetails" ma requête fonctionne par contre si ça ne retourne aucun enregistrement ça me renvoit rien du tout ...

    J'espère avoir été assé clair dans mon explication et merci d'avance de votre aide

    Pour aider voici ma requête actuelle qui fonctionne uniquement s'il y a des enregistrements correspondant dans "factreglements"

    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
     
    SELECT
    CLIENT.RaisonSociale as RaisonSociale,
    CLIENT.NumClient as NumClient,
    CLIENT.CP as CP,
    CLIENT.Ville as Ville,
    FacturesMDIFamily.IDFacture as IDFacture,
    FacturesMDIFamily.TotalTTC as TotalTTC,
    sum(FacturesMDIFamily_Reglements.MontantReglement) as MontantReglement
    FROM
    CLIENT,
    FacturesMDIFamily,
    FacturesMDIFamily_Reglements
    WHERE
    FacturesMDIFamily.IDFacture='500' and
    FacturesMDIFamily_Reglements.IDFacture=FacturesMDIFamily.IDFacture and
    CLIENT.IDClient=FacturesMDIFamily.IDClient
    GROUP BY
    FacturesMDIFamily.IDFacture
    HAVING
    FacturesMDIFamily.TotalTTC>sum(FacturesMDIFamily_Reglements.MontantReglement)

  2. #2
    Membre actif Avatar de Gilles_69
    Inscrit en
    Décembre 2007
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 209
    Points : 251
    Points
    251
    Par défaut
    Salut,
    il faut passer par les classiques ordres JOIN.

    A+

  3. #3
    Membre régulier Avatar de tom06440
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 150
    Points : 102
    Points
    102
    Par défaut
    Salut

    Merci de ta réponse

    mais le problème c'est que si avec la clé IDFacture ma table des règlements ne retourne rien et bien c'est toute ma requête qui ne retourne rien ...
    J'ai tenté avec INNER JOIN sans succès et je dois dire que je ne suis pas un pro du SQL

  4. #4
    Membre actif Avatar de Gilles_69
    Inscrit en
    Décembre 2007
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 209
    Points : 251
    Points
    251
    Par défaut
    As-tu essayé avec LEFT OUTER JOIN ?

    A=

  5. #5
    Membre régulier Avatar de tom06440
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 150
    Points : 102
    Points
    102
    Par défaut
    je viens de réussir une requête avec LEFT JOIN

    si mon calcul est null ça me renvoit qd même le résultat des autres tables

    Par contre j'ai voulu rajouter un tri avec la claude having à la fin et ça ne m'affiche plus rien ...

    Voici mon code actuel :
    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
     
    SELECT
    FacturesMDIFamily.totalttc AS totalttc,
    FacturesMDIFamily.IDFacture,
    CLIENT.RaisonSociale,
    CLIENT.CP,
    CLIENT.Ville,
    SUM(FacturesMDIFamily_Reglements.MontantReglement) AS MontantReglement
    FROM
    CLIENT,
    FacturesMDIFamily
    LEFT JOIN
    FacturesMDIFamily_Reglements ON FacturesMDIFamily_Reglements.IDFacture=FacturesMDIFamily.IDFacture
    WHERE
    CLIENT.IDClient=FacturesMDIFamily.IDClient
    GROUP BY
    FacturesMDIFamily_Reglements.IDFacture
    HAVING
    FacturesMDIFamily.totalttc>SUM(FacturesMDIFamily_Reglements.MontantReglement)
    Merci pour ton aide

  6. #6
    Membre actif Avatar de Gilles_69
    Inscrit en
    Décembre 2007
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 209
    Points : 251
    Points
    251
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    HAVING
    FacturesMDIFamily.totalttc>SUM(FacturesMDIFamily_Reglements.MontantReglement)
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    HAVING 
    TotalTTC > MontantReglement
    et tu peux mettre ton ORDER BY après

    A+

  7. #7
    Membre régulier Avatar de tom06440
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 150
    Points : 102
    Points
    102
    Par défaut
    Si ma valeur de "MontantTotal" est "NULL" la requête ne me retourne plus rien avec la clause having

    J'ai tenté cette écriture dans le having :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    HAVING
    (TotalFacture>MontantTotal) OR (MontantTotal='NULL')
    mais sans succès ...

    Merci pour votre aide

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 551
    Points : 260
    Points
    260
    Par défaut
    essaye de mettre 0 a la place de NULL.a tout hasard.....
    a moins qu'il ne faille pas mettrre NULL entre " "

  9. #9
    Firetox
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    HAVING
    (TotalFacture>MontantTotal) OR (MontantTotal is null)

  10. #10
    Membre régulier Avatar de tom06440
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 150
    Points : 102
    Points
    102
    Par défaut
    Vraiment un grand merci @ tous
    j'ai utilisé la solution de firetox pour finaliser ma requête et ça fonctionne au top du top

    vous m'avez retirer un arbre du pied

    @ très bientot sur le forum je pense

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

Discussions similaires

  1. [AC-2007] besoin d'aide pour concevoir une requête
    Par tibofo dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 04/10/2009, 11h15
  2. Demande d'aide pour l'optimisation d'une requête
    Par Menoto dans le forum Optimisations
    Réponses: 4
    Dernier message: 04/04/2008, 12h36
  3. Demande d'aide pour concevoir un algo de routage sur un graphe.
    Par condor_01 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 12/11/2007, 12h02
  4. Réponses: 2
    Dernier message: 02/03/2006, 11h57
  5. Demande d'aide pour une requête
    Par arkzor dans le forum Requêtes
    Réponses: 3
    Dernier message: 28/12/2004, 02h40

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