Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

compter le resultat d'une requete compliquée

2 réponses
Avatar
Etienne SOBOLE
salut.

j'ai une requete compliquée avec un GROUP BY dedans.

genre
SELECT table.id FROM table WHERE ... GROUP BY table.id

voila sauf que je ne m'interesse pas du tout a la liste des resultats, mais
juste au nombre de resultat...
evidement
SELECT count(*) FROM table WHERE ... GROUP BY table.id
me renvoit pas du tout le nombre de resultat mais le nombre groupé pour
chaque table.id

donc je fais un
SELECT count(*) FROM table WHERE id IN (SELECT table.id FROM table WHERE ...
GROUP BY table.id);

et la, ca marche, sauf que du coup ca se met a prendre un temps
considérable.
donc ma question est comment je peux faire pour faire un count sans utiliser
une sous requete...

voila.
merci
Etienne

2 réponses

Avatar
see
Etienne SOBOLE wrote:

j'ai une requete compliquée avec un GROUP BY dedans.

genre
SELECT table.id FROM table WHERE ... GROUP BY table.id

voila sauf que je ne m'interesse pas du tout a la liste des resultats, mais
juste au nombre de resultat...
evidement
SELECT count(*) FROM table WHERE ... GROUP BY table.id
me renvoit pas du tout le nombre de resultat mais le nombre groupé pour
chaque table.id



Je ne suis pas sûr de comprendre ce que tu veux. J'ai m'impression que
tu recherches le nombre de valeur distinct pour id.

Si oui :
SELECT count(distinct id) FROM table WHERE ...;

devrait faire l'affaire.

donc je fais un
SELECT count(*) FROM table WHERE id IN (SELECT table.id FROM table WHERE ...
GROUP BY table.id);



J'ai un doute. A quoi bon faire un GROUP BY dans ta sous-requête ?
N'aurait-on pas la même chose avec :
SELECT count(*) FROM table WHERE id IN (SELECT table.id FROM table WHERE
...);
ce qui me parait équivalent à la requête triviale :
SELECT count(*) FROM table WHERE ...;

Ah mince, ce n'est pas la même requête que celle que j'ai proposé plus
haut ! J'ai du faire une erreur quelque part ...

--
Bruno
http://errance.lirano.net (photographies)
Avatar
Fred Brouard - SQLpro
Impossible sans ss requête.

Autre manière possible si ton SGBDR accepte :

SELECT COUNT(*)
FROM (SELECT table.id FROM table WHERE ... GROUP BY table.id) AS T

A +

--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************

Etienne SOBOLE a écrit:
salut.

j'ai une requete compliquée avec un GROUP BY dedans.

genre
SELECT table.id FROM table WHERE ... GROUP BY table.id

voila sauf que je ne m'interesse pas du tout a la liste des resultats, mais
juste au nombre de resultat...
evidement
SELECT count(*) FROM table WHERE ... GROUP BY table.id
me renvoit pas du tout le nombre de resultat mais le nombre groupé pour
chaque table.id

donc je fais un
SELECT count(*) FROM table WHERE id IN (SELECT table.id FROM table WHERE ...
GROUP BY table.id);

et la, ca marche, sauf que du coup ca se met a prendre un temps
considérable.
donc ma question est comment je peux faire pour faire un count sans utiliser
une sous requete...

voila.
merci
Etienne





--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************