Requete sql

Fermé
mb12fr Messages postés 74 Date d'inscription jeudi 8 février 2001 Statut Membre Dernière intervention 22 septembre 2003 - 30 janv. 2002 à 10:26
mb12fr Messages postés 74 Date d'inscription jeudi 8 février 2001 Statut Membre Dernière intervention 22 septembre 2003 - 30 janv. 2002 à 16:40
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

Select count(action), nom from <nom_table>
group by action;

Ca doit être dans ce style, mais G pas trop compris ton truc.
0
mb12fr Messages postés 74 Date d'inscription jeudi 8 février 2001 Statut Membre Dernière intervention 22 septembre 2003 5
30 janv. 2002 à 10:46
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
floverdevel Messages postés 121 Date d'inscription dimanche 18 février 2001 Statut Membre Dernière intervention 20 mai 2011 15
30 janv. 2002 à 16:08
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
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
mb12fr Messages postés 74 Date d'inscription jeudi 8 février 2001 Statut Membre Dernière intervention 22 septembre 2003 5
30 janv. 2002 à 16:40
Hé bé mon povre, je suis pas dans la pastis moi...

Bon, je vais torturer mon serveur web.

Merci à tous
0