[SQL] Requete qui compte un maximum...

Requete qui compte un maximum... [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 15-07-2003 à 10:01:13    

Salut !!
 
  j'ai une requête qui me renvoie qqch du genre :
id    -    theme    -    sous-theme
1     -    aaaaa    -    sous-aaaa1
2     -    bbbbb    -    sous-bbbb1
2     -    bbbbb    -    sous-bbbb1
3     -    ccccc    -    sous-cccc1
3     -    ccccc    -    sous-cccc1
4     -    ddddd    -    sous-dddd1
7     -    ggggg    -    sous-gggg1
 
ce que je voudrais c'est connaître le nombre maximum de tuple qu'il peut y avoir avec un même id (ici : 2)
 
si qqun a compris, peut-il me dire comment faut-il que je modifie ma requête :

Code :
  1. SELECT theme.id, libelle_theme, libelle_soustheme
  2. FROM theme, soustheme
  3. WHERE theme.id = soustheme.themeCorrespondant


 
  merci d'avance !


Message édité par sire de Botcor le 15-07-2003 à 10:08:53

---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 15-07-2003 à 10:01:13   

Reply

Marsh Posté le 15-07-2003 à 10:18:02    

avec  
 

Code :
  1. SELECT theme.id, COUNT(theme.id)
  2. FROM theme, soustheme
  3. WHERE theme.id = soustheme.themeCorrespondant
  4. GROUP BY theme.id


 
j'obtiens la liste des id avec leur nombre de theme chacun !
ce que je voudrais c'est qu'il ne m'affiche que le nombre maximum de la colonne de droite...
 
  comment faire ?


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 15-07-2003 à 10:27:14    

select MAX(COUNT(theme.id))... ?

Reply

Marsh Posté le 15-07-2003 à 10:27:17    

sire de botcor a écrit :

avec  
 

Code :
  1. SELECT theme.id, COUNT(theme.id)
  2. FROM theme, soustheme
  3. WHERE theme.id = soustheme.themeCorrespondant
  4. GROUP BY theme.id


 
j'obtiens la liste des id avec leur nombre de theme chacun !
ce que je voudrais c'est qu'il ne m'affiche que le nombre maximum de la colonne de droite...
 
  comment faire ?
 


 
having count theme.id >= (select max count (theme.id) from where group by theme.id) ?

Reply

Marsh Posté le 15-07-2003 à 10:35:50    

polo021 a écrit :

select MAX(COUNT(theme.id))... ?


 
g essayé : ça ne fonctionne pas !


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 15-07-2003 à 10:36:19    

hop le fou a écrit :


 
having count theme.id >= (select max count (theme.id) from where group by theme.id) ?
 


 
sachant que j'utilise MySQL : donc pas de requête imbriquée...


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 15-07-2003 à 11:04:15    

sire de botcor a écrit :


 
sachant que j'utilise MySQL : donc pas de requête imbriquée...


 
création d une table provisoire dans laquelle tu fais ton premier test et ensuite tu fais un max sur cette table et tu degages la table créée?

Reply

Marsh Posté le 15-07-2003 à 11:09:14    

hop le fou a écrit :


 
création d une table provisoire dans laquelle tu fais ton premier test et ensuite tu fais un max sur cette table et tu degages la table créée?


 
je crois que je vais laisser tomber :
je vais utiliser ma dernière requête et faire un traitement en PHP...
 
merci qd même d'avoir essayé.


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 15-07-2003 à 11:13:53    

sire de botcor a écrit :


 
je crois que je vais laisser tomber :
je vais utiliser ma dernière requête et faire un traitement en PHP...
 
merci qd même d'avoir essayé.


effectivement ca sera moins lourd
pas de quoi  :D

Reply

Marsh Posté le 15-07-2003 à 12:49:29    

Avec un Order by DESC sur le COUNT t'auras moins de lignes à lire en PHP.
 

Code :
  1. SELECT theme.id, COUNT(theme.id) as CNT
  2. FROM theme, soustheme
  3. WHERE theme.id = soustheme.themeCorrespondant
  4. GROUP BY theme.id
  5. ORDER BY CNT DESC

 


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 15-07-2003 à 12:49:29   

Reply

Marsh Posté le 15-07-2003 à 13:24:11    

surtout si tu fais un limit ...
 

Code :
  1. SELECT theme.id, COUNT(theme.id) as CNT
  2. FROM theme, soustheme 
  3. WHERE theme.id = soustheme.themeCorrespondant 
  4. GROUP BY theme.id
  5. ORDER BY CNT DESC
  6. LIMIT 0,1

 

Reply

Marsh Posté le 15-07-2003 à 14:00:57    

Ben avec le limit on a juste le nombre maxi (ce qui est demandé).
Mais si on veux connaître les thèmes qui ont un maxi de sous-thèmes, ben faut penser qu'il peut y en avoir plusieurs.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 15-07-2003 à 14:04:26    

c'est pas faux ...
 :jap: mille pardons!!!


Message édité par anapajari le 15-07-2003 à 14:05:13
Reply

Marsh Posté le 15-07-2003 à 14:05:44    

c cool !!
[:spikler] beaucoup


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 15-07-2003 à 14:09:24    

Anapajari a écrit :

c'est pas faux ...
 :jap: mille pardons!!!


Y'a pas de pb, ta proposition réponds parfaitement à la question telle qu'elle était posée.
Reste à savoir si elle était BIEN posée :D


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 15-07-2003 à 14:20:37    

Mara's dad a écrit :


Y'a pas de pb, ta proposition réponds parfaitement à la question telle qu'elle était posée.
Reste à savoir si elle était BIEN posée :D  


 
je confirme !
ce que je voulais c'était seulement le nombre max


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed