Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
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 28/11/2010, 10h45   #1
Invité de passage
 
Wolf Blue
Inscription : novembre 2010
Messages : 10
Détails du profil
Informations personnelles :
Nom : Wolf Blue

Informations forums :
Inscription : novembre 2010
Messages : 10
Points : 0
Points : 0
Par défaut Comptage sur un seul champ

Bonjour,

A partir de ce listing :

Citation:
MAISON_AE145
MAISON_AR717
MAISON_IJ07
JARDIN_78
JARDIN_47
VOITURE_78AA
VOITURE_AA45
ARTICLE_4547
BOITE_AA54
En SQL, j'aimerais compter le nombre de chaque élément (en sachant qu'il existe des centaines d'articles différents dont je n'ai pas la liste) :
Voici le résultat voulu

Citation:
Element | Nombre
MAISON | 3
JARDIN | 2
VOITURE | 2
ARTICLE | 1
BOITE | 1
Bien-sur j'ai essayé d'utiliser GROUP BY et COUNT(*), mais la difficulté est que la requête porte sur un seul champ. (le type et l'id sont mélangés)

merci pour l'aide
bluewolf95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 11h20   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 957
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 957
Points : 18 163
Points : 18 163
Envoyer un message via MSN à CinePhil
Donne la structure de la table et la requête que tu as essayée.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 14h37   #3
Membre Expert
 
Avatar de Nudger
 
Homme Thomas Arnaud
Directeur de projet
Inscription : octobre 2010
Messages : 452
Détails du profil
Informations personnelles :
Nom : Homme Thomas Arnaud
Âge : 36
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Directeur de projet
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : octobre 2010
Messages : 452
Points : 1 012
Points : 1 012
Envoyer un message via Skype™ à Nudger
Bonjour,

Pour MySQL, ça pourrait être quelque-chose dans ce genre :
Code :
1
2
3
4
 
SELECT LEFT(Element, POSITION('_',Element)), COUNT(*) 
FROM la_table
GROUP BY LEFT(Element, POSITION('_',Element))
__________________
www.nudge.org Surveillez et optimisez vos applications Java
Nudger est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 00h33   #4
Invité de passage
 
Wolf Blue
Inscription : novembre 2010
Messages : 10
Détails du profil
Informations personnelles :
Nom : Wolf Blue

Informations forums :
Inscription : novembre 2010
Messages : 10
Points : 0
Points : 0
merci beaucoup, c'est exactement ce que je cherche.

Edit : ça ne fonctionne pas avec "POSITION" (j'ai une erreur de syntaxe MySQL), mais ça fonctionne avec "LOCATE".

Code :
1
2
3
SELECT LEFT(id, LOCATE('_', id)), count(*)
FROM articles	
GROUP BY LEFT(id, LOCATE('_',id))
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
--
-- Structure de la table `articles`
--
 
CREATE TABLE IF NOT EXISTS `articles` (
  `id` varchar(55) NOT NULL,
  `valeur` int(11) NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
--
-- Contenu de la table `articles`
--
 
INSERT INTO `articles` (`id`, `valeur`) VALUES
('MAISON_IJ04', 0),
('MAISON_IJ07', 0),
('MAISON_AE145', 0),
('JARDIN_78', 0),
('JARDIN_74', 0),
('VOITURE_78AA', 0),
('VOITURE_7R5A', 0),
('VOITURE_1111', 0),
('BOITE_AA54', 0);
bluewolf95 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 22h49.


 
 
 
 
Partenaires

Hébergement Web