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 :

requête dont je n'arrive pas à regrouper les résultats


Sujet :

Langage SQL

  1. #1
    Membre averti Avatar de mdr_cedrick
    Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2008
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Janvier 2008
    Messages : 374
    Points : 336
    Points
    336
    Par défaut requête dont je n'arrive pas à regrouper les résultats
    Bonjour à tous

    je vous donne ma requête et je vous explique ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT f.id, f.date, f.code, do.code as co, f.facture_avoir, do.libelle as dossier, do.activite, f.statut, f.rs_c, conc.commande,
    SUM((dd.prix * (1 + (dd.m / 100))) * dd.q) as total_ht,
    SUM(((dd.prix * (1 + (dd.m / 100))) * dd.q) * (1 + (dd.tva / 100))) as total_ttc
    FROM ".FACTURE." f
    LEFT JOIN ".DOSSIER." do ON do.id = f.dossier AND do.statut <> 99
    LEFT JOIN ".CONCERNER." conc ON conc.facture=f.id
    LEFT JOIN ".FACTURE_DET." dd ON dd.facture=f.id AND dd.type=4 AND dd.h=1
    WHERE f.date LIKE '".$dateRecherche."%'  AND f.facture_avoir=0
    GROUP BY f.id
    ORDER BY f.code ASC
    alors cette requête fonctionne bien sauf que ...
    je fais une jointure avec la table CONCERNER (qui me permet d'accéder à conc.commande), le soucis c'est que dans CONCERNER je peux avoir X lignes qui sont égales à conc.facture=f.id
    ce qui fait que les deux SUM(...) sont multipliés par X quand j'ai X lignes
    ce que j'ai fait c'est mettre un distinct sur conc.commande mais ça m'a fait planter la requête
    j'ai également fait un groupement : GROUP BY f.id, conc.commande
    mais là si j'ai X lignes il me les affiche toutes (donc pas groupées)

    je viens donc vous demander un peu d'aide
    je pense qu'il faudrait quelque chose qui serait un équivalent de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DISTINCT LEFT JOIN ".CONCERNER." conc ON conc.facture=f.id
    mais qui bien sûr n'existe pas

    merci d'avance
    Pour voir qu'il fait noir, on n'a pas besoin d'être une lumière

  2. #2
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    il faut mettre dans le group by tous les champs non agrégés du select

  3. #3
    Membre averti Avatar de mdr_cedrick
    Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2008
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Janvier 2008
    Messages : 374
    Points : 336
    Points
    336
    Par défaut
    j'avais essayé également
    mais sans succès si ma raison_sociale était "titi" et correspondait à la commande 2093 qui se trouvait 3 fois dans CONCERNER
    il m'affiche
    titi 2093
    titi 2093
    titi 2093

    alors que moi je ne veux que titi 2093
    Pour voir qu'il fait noir, on n'a pas besoin d'être une lumière

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Ajoute conc.commande dans ton group by.

    Par contre SQLement parlant, ton group by est mal écrit. On y reviendra si mon indication te donne le résultat escompté.

  5. #5
    Membre averti Avatar de mdr_cedrick
    Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2008
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Janvier 2008
    Messages : 374
    Points : 336
    Points
    336
    Par défaut
    non vmolines il me retourne la même chose que ce que j'ai mis précédemment
    à savoir si la commande 2093 est 4 fois dans CONCERNER
    j'aurai
    toto 2092
    titi 2093
    titi 2093
    titi 2093
    titi 2093
    tutu 2094

    au lieu de
    toto 2092
    titi 2093
    tutu 2094

    et pour le moment ce j'ai avec ma requête actuel, en admettant que j'ai 10 euros pour chaque "nom"

    ça me fait
    toto 2092 10.00
    titi 2093 40.00
    tutu 2094 10.00

    au lieu de
    toto 2092 10.00
    titi 2093 10.00
    tutu 2094 10.00
    Pour voir qu'il fait noir, on n'a pas besoin d'être une lumière

  6. #6
    Membre averti Avatar de mdr_cedrick
    Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2008
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Janvier 2008
    Messages : 374
    Points : 336
    Points
    336
    Par défaut
    du coup j'ai vu avec mon chef de projet et on va afficher des données différentes
    donc je laisse tomber cette petite requête sympathique

    merci beaucoup de votre aide
    Pour voir qu'il fait noir, on n'a pas besoin d'être une lumière

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

Discussions similaires

  1. Une requête que je n'arrive pas à faire
    Par Denti-fritz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/12/2005, 13h53
  2. Réponses: 3
    Dernier message: 18/11/2005, 12h27
  3. Réponses: 8
    Dernier message: 17/11/2005, 12h24
  4. [C#] Je n'arrive pas à remonter les données
    Par Le Basque dans le forum Windows Forms
    Réponses: 14
    Dernier message: 17/01/2005, 19h40

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