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

Requêtes MySQL Discussion :

Une requête que je ne parviens pas à trier


Sujet :

Requêtes MySQL

  1. #1
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut Une requête que je ne parviens pas à trier
    Bonjour à tous,

    Soit une table mysql "compta" (incmplète mais c'est pour l'exemple) :

    id | M | date | debit | credit
    1 | 1 | 2008-10-01 | 0 | 100
    2 | 1 | 2008-10-01 | 20 | 0
    3 | 1 | 2008-10-01 | 0 | 120
    4 | 2 | 2008-10-20 | 0 | 100
    5 | 1 | 2008-10-25 | 0 | 100

    Je veux lire cette table pour éditer des factures. Mais je voudrais "grouper" par date. C'est à dire, pour le membre 1, faire une facture qui afficherait les 3 opérations qu'il a faites le 2008-10-01 puis UNE AUTRE pour son opé du 2008-10-25... En résumé, si je trouve X opération effectuées à la même date, je les sors sur la même facture...

    Tourné le truc en tous sens et je sèche lamentablement.
    Merci d'une piste ou d'un tuyau et bonne journée.

  2. #2
    Membre chevronné
    Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM compta
    WHERE M = 1
      AND date = '2008-10-01'
    ?

    Peut-être en rajoutant un GROUP BY.

    Enfin, un exemple de jeu de résultats ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Par défaut Requete !!
    essai sa et dit moi si c ce que tu attend comme résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT *
    FROM compta
    WHERE (
    M =1
    )
    ORDER BY date DESC ;

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 86
    Par défaut
    Bonjour,

    Perso, je ferais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM COMPTA
    ORDER BY M, DATE
    Tout simplement

    Vincent

  5. #5
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    D'abord merci à vous de vous pencher sur mon prob.

    @Chengj : je lis la table avec une boucle pour le M 1...mais je ne connais pas la date. Donc je ne peux la mettre dans la clause WHERE

    @bleubykey : effectivement, ta requete sort toutes les lignes de la table pour le M1 triées par date... moi je voudrais que la sortie sépare les résultats par groupe de date. Supposons que ma facture comporte toutes les colonnes de la table, pour le 1, j'aurai une facture avec les 3 lignes du 2008-10-01 + une facture avec une ligne pour le 2008-10-25

    @youpitralala : ben ta requete sort toute la table triée par M et par date, mais j'ai besoin de la sortie pour le M1...

  6. #6
    Membre chevronné Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Par défaut
    si tu veux une ligne par facture, ce serait du genre :
    Code MySQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT M, date, SUM(debit) 'debit', SUM(credit) 'credit'
    FROM COMPTA
    WHERE M = 1
    GROUP BY date 
    WITH ROLLUP ;

    et avec cet exemple ci :
    d | M | date | debit | credit
    1 | 1 | 2008-10-01 | 0 | 100
    2 | 1 | 2008-10-01 | 20 | 0
    3 | 1 | 2008-10-01 | 0 | 120
    4 | 2 | 2008-10-20 | 0 | 100
    5 | 1 | 2008-10-25 | 0 | 100
    tu auras :
    M | date | debit | credit |
    1 | 2008-10-01 | 20 | 220 |
    1 | 2008-10-25 | 0 | 100 |
    NULL | NULL | 20 | 320 |
    LE "with rollup" te permet d'avoir comme dernière ligne le montant total de tout les débit et de tout les crédits. c'est optionnel mais si t'en as l'utilité je te le conseille

  7. #7
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Merci, mais en fait, je m'explique sans doute mal :

    Je ne veux pas un cumul des débits / credits, je le fais en php. Je veux que ma boucle puisse ramasser toutes les opé d'une même date pour un M donné.
    La facture ressemblerait à ça, en supposant que j'ai un champ libellé:

    date | libellé | qte | PUHT | total
    20-10-2008 | logiciel | 1 | 100 | 100
    20-10-2008 | cable | 3 | 10 | 30
    20-10-2008 | prise | 5 | 10 | 50

    et une autre facture si le M a fait un achat un autre jour.

    Tout en sachant que ma boucle parcourt la table à la recherche de l'ID membre mais pas d'une date précise. Et au bout du compte la facture du 20-10 compterait X lignes si il y a X opé ce jour là...

    Ou la la...

  8. #8
    Membre chevronné Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Par défaut
    dans ce cas il n'y à aucune notion de regroupement. un simple trie sur la date suffit à afficher ce que tu désire.

    Si tu veux être encore plus précis. Montre nous le résultat que tu désire pour un utilisateur ayant plus de d'une facture à afficher

  9. #9
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    La même chose, en fait:

    date | libellé | qte | PUHT | total
    20-10-2008 | logiciel | 1 | 100 | 100
    20-10-2008 | cable | 3 | 10 | 30
    20-10-2008 | prise | 5 | 10 | 50

    date | libellé | qte | PUHT | total
    20-12-2008 | écran | 1 | 1000 | 1000
    20-12-2008 | souris | 1 | 10 | 10

    De sorte que toutes les opérations comptables effectuées le même jour (donc pour une même commande, si on va par là) s'affiche sur une facture. Mais je répète que la sélection s'opère par ID M et pas par date. Si je fais un GROUP BY date, ça n'affiche qu'une ligne alors qu'il y en a 3 pour le même jour...

  10. #10
    Membre chevronné
    Homme Profil pro
    Lead Dev Web
    Inscrit en
    Avril 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lead Dev Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2005
    Messages : 282
    Par défaut
    A ma connaissance ce que tu veux n'est pas possible avec mysql déjà.
    En gros tu voudrais récupérer une sorte de tableau avec pour index ton id et un sous tableaux avec les différentes opérations.

    Une petite boucle après le select et hop

  11. #11
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Pas possible en mysql ???
    Une boucle après le select ???


    Là j'avoue que je ne te suis pas...

  12. #12
    Membre chevronné
    Homme Profil pro
    Lead Dev Web
    Inscrit en
    Avril 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lead Dev Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2005
    Messages : 282
    Par défaut
    tu veux bien un truc du genre un tableaux 2 dimensions ?

    array("id1" => array($facture1,$facture2),
    "id2" => array($facture1,$facture2)
    etc...
    )

  13. #13
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Non, ça je ne crois pas... je veux les données de la table pour UN id donné...et je pense que ça doit être possible avec une sous requete mysql. Mais merci quand même.

  14. #14
    Membre chevronné
    Homme Profil pro
    Lead Dev Web
    Inscrit en
    Avril 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lead Dev Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2005
    Messages : 282
    Par défaut
    Ce qui m'échappe dans ce que tu veux faire c'est qu'on dirait que tu veux récupérer une ligne avec des "sous-lignes"....
    Hors une requête ne renvois que des lignes...

  15. #15
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Ben non, je veux juste récupérer les lignes mais si 2 ou 3 lignes ont la même date et le même ID, alors je les récupère "ensemble" puis ainsi de suite jusqu'à la ou les lignes suivantes....

  16. #16
    Membre chevronné Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Par défaut
    enfait ce qu'il désire, c'est faire en une requète ce qu'en ferait plusieurs.

    Un select par date, mais en un seul select

    et je t'avouerais qu'en ne connaissant uniquement ton champ M comme données. je ne saurais te donner une solution permettant de faire ce que tu cherche. et je doute qu'il y en ait une...

    parceque même avec d'autre drivers comme pdo ou mysqli, en faisant du multi query, il faudrait connaître au préalable les dates.

    Dans ce cas il faudrait d'abord récupérés les dates, et boucler coté php des requètes, avec un FetchAll à la fin regroupant un vrai tableau bidimensionnel!

  17. #17
    Membre chevronné
    Homme Profil pro
    Lead Dev Web
    Inscrit en
    Avril 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lead Dev Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2005
    Messages : 282
    Par défaut
    Pas possible....En tout cas je vois pas comment tu peux récupérer plusieurs lignes "ensemble".

    Tu récupère et tu regroupe après avec le langage avec lequel tu dev...

    Oui si tu trouve la solution je suis preneur

Discussions similaires

  1. une requête que je n'arrive pas à faire marcher
    Par JeanNoel53 dans le forum Firebird
    Réponses: 8
    Dernier message: 16/12/2013, 09h27
  2. il ne trouve pas une requête que j'ai créée
    Par Gabrieel dans le forum VBA Access
    Réponses: 7
    Dernier message: 07/11/2008, 17h08
  3. Doit modifier une requête que je ne comprends pas
    Par dldstyle dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/08/2008, 09h36
  4. Ma requête contient une erreur, que je ne trouve pas
    Par adrien.ren dans le forum Langage SQL
    Réponses: 2
    Dernier message: 30/05/2008, 10h32
  5. 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

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