Requete sql

mb12fr Messages postés 74 Statut Membre -  
mb12fr Messages postés 74 Statut Membre -
Bonjour,

j'ai la table suivante

champs qui,action,quoi
--------------------------
toto, boire, eau
toto, boire, vin
toto, manger, pain
toto, manger ,fromage
toto, dormir ,sieste
titi, boire, vin
titi, manger, pain
titi, manger, fromage

et je voudrai un résultat comme suit:

nom boire manger dormir
----------------------------
titi 1 2 0
toto 2 2 1

C'est à dire qui compte sur une même ligne les occurences d'une même valeur.

Je voudrais une requete du genre ;

select qui, count(action=='manger'),count(action=='boire'),count(action=='dormirr');

mais mes connaissances en sql sont un peu limitées.

Auriez vous une idée ?

Merci

3 réponses

  1. Colt Siver
     
    Select count(action), nom from <nom_table>
    group by action;

    Ca doit être dans ce style, mais G pas trop compris ton truc.
    0
    1. mb12fr Messages postés 74 Statut Membre 5
       
      En fait ce que je veux est avoir SUR LA MEME LIGNE, la somme des différentes occurences de la première valeur (boire), puis la somme des différentes occurences de la deuxième valeur (manger), puis en fin pareil pour la troisième valeur (dormir).

      Je continue de chercher...
      Merci de ta réposne
      A+
      0
  2. floverdevel Messages postés 121 Statut Membre 15
     
    Tu peux essayer

    "select * from table
    where action = 'manger';"
    et compter le nombre d'enregistrements que ca te donne

    et faire la meme chose pour les autre valeures que tu veux calculer.

    bien sur l'idéal serait de le faire en une seule requete...

    Floverdevel
    No 'one' can be told what the matrix is.
    You'll have to explore it yourself.
    0
  3. sebsauvage
     
    En SQL brut, ce n'est pas possible.

    En fait, il faut que tu créé un recordset ou une table dont le nombre de colonnes est dynamique (il dépend du nombre d'action différentes existantes).

    Le SQL de base ne sait pas faire ça.

    Je te conseille plutôt de développer un petit programme qui va calculer ce résultat.

    A la limite, ça serait faisable en TSQL (sql procédural (sybase/microsoft sql server)), mais c'est vraiment un affreux bricolage.
    0
    1. mb12fr Messages postés 74 Statut Membre 5
       
      Hé bé mon povre, je suis pas dans la pastis moi...

      Bon, je vais torturer mon serveur web.

      Merci à tous
      0