< SQL count(*) | Forum des BTS

SQL count(*)

Chataîgne

New Member
Bonjour,
j'ai du mal avec l'expression COUNT (*)
je ne sais jamais s'il faut utiliser group by ou non
J'ai cherché sur internet mais je ne trouve que des exemples simples.

Pourriez vous également me dire si ce que j'ai fait est juste
énoncé
MATIERE(code matière, Nom matière)
OUVRAGE( Code ouvrage, titre ouvrage, #Code matière)
il faut la liste des matières (code nom) avec pour chaqu'unes d'elles le nombre d'ouvrages écrits

MA solution:
SELECT Code matière, Nom matière, count(*)
FROM MATIERE, OUVRAGE
WHERE M.Code Matière=O.Code Matière
Group by Code matière

Honnètement j'ai mis le group by sans savoir s'il le faut ou non
 
Re : SQL count(*)

au fait si tu utilises count ou sum ou autre et qu'en plus tu ajoute un autre attribut dans le select (ici code matière et et nom matière) tu dois lui indiquer de regrouper sur ces deux attributs donc Group by Code matière, Nom matière (sur la forme attention en principe ta requête ne va pas fonctionner à cause des noms des attributs qui comportent des espaces,
et je n'aime ta jointure avec O au lieu d'ouvrage et M au lieu de matière (sauf si tu l'as fait pour aller vite)
 
Re : SQL count(*)

Bonjour,
Merci beaucoup de m'avoir répondu
Je ne comprend pas pourquoi il faut mettre Group by Code matière, Nom matière , comment on peut grouper avec deux attibuts?
Pour la jointure ils nous ont appris ca dans le cours, donc il l'acceptent mais pour les examens je marque en entier.
Pour les attributs on a aussi des espaces dans le cours :s
Je ne cherche pas du tout a vous contredire, je vous dis juste ce que je connais .
 
Re : SQL count(*)

je vais te répondre d'abord sur la forme , en sql si tu as des attributs avec des espaces , le logiciel ne peut pas savoir si c'est le nom de l'attribut ou si ce sont plusieurs attributs et que tu as oublié la virgule pour les séparer, tu seras donc obligé de mettre chacun de ces attributs entre guillemet (crochets sur access) pour les noms de tables pareil... le plus simple aurait été que la clé primaire n'ait pas le même nom que la clé étrangère comme ça tu n'as même pas besoin d'indiquer le nom de la table
pour le group by, comme tu fais un calcul (compter le nombre de livre) et que tu lui a demandé de t'afficher le codes de matière et leur nom, tu dois lui indiquer qu'il fait le calcul sur la colonne count(...) et qu'il regroupe toutes les autres colonnes, si tu ne le fait pas tu vas avoir une ligne par livre avec comme quantité 1 , bref ce que tu dois savoir c'est que dès que tu affiches (select) une colonne avec un calcul (count, sum, avg ou autre) et que tu ajoutes d'autres colonnes tu dois utiliser le group by pour toutes les autres colonnes
voilà deux liens qui expliquent
http://sqlpro.developpez.com/cours/sqlaz/ensembles/#L1

Lien 2
 
Dernière édition:
Retour
Haut