mysql compter sur les x premiers

Le
Roumégou Eric
Bonjour

en mysql natif j'ai besoin de compter dans une requete sur les x
premiers de ma requete. Je comptais sur le LIMIT mais cela ne convient
pas

par exemple x, cela me donnerait
select sum(case BNK_CAT02 when '1' then 1 else 0) as nbtype1,
sum(case BNK_CAT02 when '2' then 1 else 0) as nbtype2,
sum(case BNK_CAT02 when '3' then 1 else 0) as nbtype3
from matable
where key_id345
limit 15

mais le limit s'applique sur les tuples retournés (donc là il m'en
retournerait max 15 alors que de toutes façons cela ne retourne qu'une
ligne).

En fait j'ai besoin de compter le nombre de type 1,2 et 3 parmis les 15
premiers contrats du compte key_id345. Peut être en a-t-il une
centaine; seul m'interesse ses x premiers contrats.


Quel est la solution pour avoir ça en une requête.
MErci de vos réponses.

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
Vidéos High-Tech et Jeu Vidéo
  • Le smartphone Sony Xperia X voit sa résistance aux immersions testée durant deux ...
  • Présentation du Wendelstein 7-X le réacteur à fusion nucléaire le plus grand jamais ...
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Roumégou Eric
Le #23367561
Roumégou Eric avait prétendu :
Bonjour

en mysql natif j'ai besoin de compter dans une requete sur les x premiers de
ma requete. Je comptais sur le LIMIT mais cela ne convient pas

par exemple x, cela me donnerait
select sum(case BNK_CAT02 when '1' then 1 else 0) as nbtype1,
sum(case BNK_CAT02 when '2' then 1 else 0) as nbtype2,
sum(case BNK_CAT02 when '3' then 1 else 0) as nbtype3
from matable
where key_id345
limit 15

mais le limit s'applique sur les tuples retournés (donc là il m'en
retournerait max 15 alors que de toutes façons cela ne retourne qu'une
ligne).

En fait j'ai besoin de compter le nombre de type 1,2 et 3 parmis les 15
premiers contrats du compte key_id345. Peut être en a-t-il une centaine;
seul m'interesse ses x premiers contrats.


Quel est la solution pour avoir ça en une requête.
MErci de vos réponses.



hum j'ai bien une 1ere idée mais c'est un peu sale

en rajoutant
where contrat_id in (select contrat_id from matable where key_id345
limit 15)

avez vous mieux ?

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
Firetox
Le #23367851
Bonjour,

en utilisatn un sous requete comme table

select * from
(select * from MaTable limit 15) as tmp

fonctionne tres bien tu peux donc dans le premier select faire des count et
autre du type

select cout(tmp.type) from
(select * from MaTable limit 15) as tmp

cordialement


en utilisant la requete
"Roumégou Eric" news:
Roumégou Eric avait prétendu :
Bonjour

en mysql natif j'ai besoin de compter dans une requete sur les x premiers
de ma requete. Je comptais sur le LIMIT mais cela ne convient pas

par exemple x, cela me donnerait
select sum(case BNK_CAT02 when '1' then 1 else 0) as nbtype1,
sum(case BNK_CAT02 when '2' then 1 else 0) as nbtype2,
sum(case BNK_CAT02 when '3' then 1 else 0) as nbtype3
from matable
where key_id345
limit 15

mais le limit s'applique sur les tuples retournés (donc là il m'en
retournerait max 15 alors que de toutes façons cela ne retourne qu'une
ligne).

En fait j'ai besoin de compter le nombre de type 1,2 et 3 parmis les 15
premiers contrats du compte key_id345. Peut être en a-t-il une
centaine; seul m'interesse ses x premiers contrats.


Quel est la solution pour avoir ça en une requête.
MErci de vos réponses.



hum j'ai bien une 1ere idée mais c'est un peu sale

en rajoutant
where contrat_id in (select contrat_id from matable where key_id345
limit 15)

avez vous mieux ?

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)


Roumégou Eric
Le #23367841
Firetox avait soumis l'idée :
Bonjour,

en utilisatn un sous requete comme table

select * from
(select * from MaTable limit 15) as tmp

fonctionne tres bien tu peux donc dans le premier select faire des count et
autre du type

select cout(tmp.type) from
(select * from MaTable limit 15) as tmp

cordialement




super
Merci frederic
ça marche.

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
Publicité
Poster une réponse
Anonyme