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 :

un COUNT sans GROUP BY


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Par défaut un COUNT sans GROUP BY
    Salut !

    J'ai un petit problème pour l'écriture d'une requête et il y a un petit quelque chose que je n'arrive pas a faire malgré mes multiples essaies :'(

    J'aimerais faire un count() sans faire de GROUP BY... bon un petit exemple car c'est dur a voir dit comme ca

    De base j'ai une GROSSE requête qui me retourne quelque chose comme ca :
    C1......C2......C3
    1........1........2
    5........1........1
    9........2........1
    10......1........1
    26......2........1
    36......1........1
    Le but du jeu est de faire la somme des C3 pour des C2 identique sans perdre C1

    Pour l'exemple cela donnerais :
    C1......SOMME_DES_C3_POUR_DES_C2_IDENTIQUE
    5................................5
    9................................2
    10..............................5
    26..............................2
    36..............................5
    Le probleme qui se pose est que si j'utilise un GROUP BY pour pouvoir ensuite utiliser SUM ou COUNT, je perd des données de la colonne "C1"

    Du coup je ne sais pas trop comment faire...

    Avez-vous une idée ?


    Merci pour votre aide.

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Bonjour,

    Bien évidemment, il faut que ta version de MySQL supporte les sous-requêtes (surtout si les colonnes C1, C2 et C3 proviennent déjà d'une requête). Donc une version au moins égale à la 4.1.
    Alors, en supposant que C1, C2 et C3 soient les colonnes d'une table qui s'appellerait matable (super original, hein ), ça donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select m.C1, m.C2, t.total
    from matable m
    inner join
    (SELECT C2, sum(C3) as total
    from matable
    group by C2) as t on m.C2 = t.C2
    order by m.C1
    Voilà,

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre éclairé Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Par défaut
    Merci pour ta réponse ced ! =)

    Effectivement, ta requête donne bien le résultat voulue
    Par contre, étant donnée que "matable" est en fait une requête gourmande en temps, n'y aurais t'il pas un moyen de faire appelle qu'une seul foie à celle ci ?

    Car dans cette requête tu fait deux fois appelle à la table "matable", cela ne risque t'il pas d'exécuter deux foi la même requête ? Ou alors MySQL arrive a repérer tout seul qu'il s'agit deux fois d'une même requête ?

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

Discussions similaires

  1. COUNT sans GROUP BY
    Par afrodje dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 20/08/2009, 09h55
  2. Comment faire un Count() sans un group by interminable ?
    Par olibara dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 14/08/2009, 17h09
  3. Réponses: 7
    Dernier message: 02/02/2009, 20h04
  4. Requête récalcitrante avec un tri par COUNT sans GROUP BY
    Par Ancalagon77 dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/10/2006, 14h27
  5. Pb de COUNT et GROUP BY simple mais sans requête imbriquées
    Par vanquish dans le forum Langage SQL
    Réponses: 3
    Dernier message: 22/10/2004, 09h45

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