Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/12/2011, 02h13   #1
Membre régulier
 
Inscription : février 2007
Messages : 506
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 506
Points : 87
Points : 87
Par défaut 'group by' et 'count' dans 8 colonnes, possible ?

Bonsoir, j'ai une table (vehicules) que voici :



On retrouve toujours les mêmes nom de la colonne V1 à V8, et mon but est de regrouper c'est nom et compter le nombre de nom dans ma table :

exemple :

VSAV1HAY = 30
VL1HAY = 2
etc....

j'ai donc essayé cette requête, mais sans succès, auriez vous une idée
(ps : j'ai conscience que la table est mal construite)
Code :
SELECT V1,V2,V3,V4,V5,V6,V7,V8, count(id) AS nbr FROM vehicules GROUP BY V1
gastoncs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2011, 09h59   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 655
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 655
Points : 2 657
Points : 2 657
bonjour,

déjà lisez ceci : http://sqlpro.developpez.com/cours/sqlaz/ensembles/

Ensuite concernant les group by il faut que chaque colonne présente dans la clause select, et non encadrée par une fonction d'agrégation (count, max, min, etc), soient présente dans la clause group by.

Et pour finir je n'ai pas compris ce que vous cherchiez à compter, donc si vous pouviez donner le résultat escompter au vu du jeu de test ca serai pas mal.
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2011, 10h53   #3
Membre régulier
 
Inscription : février 2007
Messages : 506
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 506
Points : 87
Points : 87
ok,

voici le jeu de réponse de la requête ci dessus :

type nombres
VSAV1HAY 6
EA321HAY 1
VL1HAY 6
FPT1HAY 1
SR1HAY 1
VB2HAY 1
EMB2HAY 1
VTU1HAY 1
gastoncs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2011, 11h55   #4
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 655
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 655
Points : 2 657
Points : 2 657
ok,

la solution correct serai de revoir votre modélisation qui est totalement inadaptée a votre besoin.

Pourquoi ne pas commencez apr ceci ?

Sinon il est possible, je pense, de trouver un contournement au prix d'une requête très lourde, non évolutive et dependante des données presente dans votre table... => un traitement coté applicatif sera sans doute mieux
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2011, 12h54   #5
Membre régulier
 
Inscription : février 2007
Messages : 506
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 506
Points : 87
Points : 87
oui tu a raison trop complexe je vais revoir l'enregistrement des données coté applicatif, je pense ne faire qu'une colonne : V1
dans la quelle tous les libelle apparaitrons, le group by et count seront facilité.
gastoncs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2011, 12h58   #6
Membre confirmé
 
Homme Benjamin
Consultant informatique
Inscription : août 2007
Messages : 160
Détails du profil
Informations personnelles :
Nom : Homme Benjamin
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2007
Messages : 160
Points : 248
Points : 248
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
SELECT v, SUM(c) FROM
   (
   SELECT v1 AS v, COUNT(DISTINCT id) AS c FROM vehicules GROUP BY v1
   UNION
   SELECT v2 AS v, COUNT(DISTINCT id) AS c FROM vehicules GROUP BY v2
   UNION
   SELECT v3 AS v, COUNT(DISTINCT id) AS c FROM vehicules GROUP BY v3
   UNION
   SELECT v4 AS v, COUNT(DISTINCT id) AS c FROM vehicules GROUP BY v4
   UNION
   SELECT v5 AS v, COUNT(DISTINCT id) AS c FROM vehicules GROUP BY v5
   UNION
   SELECT v6 AS v, COUNT(DISTINCT id) AS c FROM vehicules GROUP BY v6
   UNION
   SELECT v7 AS v, COUNT(DISTINCT id) AS c FROM vehicules GROUP BY v7
   UNION
   SELECT v8 AS v, COUNT(DISTINCT id) AS c FROM vehicules GROUP BY v8 
   )
GROUP BY v
bhamp0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h57.


 
 
 
 
Partenaires

Hébergement Web