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...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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)
Etienne SOBOLE <etienne-nospam@tlk.fr> 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)
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)
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 *************************
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 *************************
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 *************************