从FROM子查询中的另一个表计数

时间:2013-11-25 14:26:31

标签: mysql sql

我有一个查询用于选择表中25个扇区的随机列表。

SELECT T1.idSSecteur, T1.name_fr
FROM (

SELECT * 
FROM ssecteurs
WHERE parent =316
OR parent =317
OR parent =318
ORDER BY RAND( ) 
LIMIT 25
)T1
ORDER BY T1.name_fr

我有另一个名为membres_ssecteurs的表,其中扇区与每个成员相关联。我想只获得至少有一个成员的部门。我尝试在子查询中添加JOIN子句。

SELECT T1.idSSecteur, T1.name_fr
FROM (

SELECT ssecteurs.idSSecteur, ssecteurs.name_fr, COUNT(membres_ssecteurs.idmembre)
FROM ssecteurs
INNER JOIN membres_ssecteurs ON ssecteurs.idSSecteur = membres_ssecteurs.idssecteur
WHERE parent =316
OR parent =317
OR parent =318
ORDER BY RAND( ) 
LIMIT 25
)T1
ORDER BY T1.name_fr

此查询仅返回一行而不是25限制。

1 个答案:

答案 0 :(得分:1)

尝试在ORDER BY RAND()之前添加GROUP BY ssecteurs.idSSecteur, ssecteurs.name_frHAVING COUNT > 0。这将为您提供至少有一个COUNT行:

SELECT T1.idSSecteur,T1.name_fr
FROM (
  SELECT ssecteurs.idSSecteur,ssecteurs.name_fr,COUNT(membres_ssecteurs.idmembre)
  FROM ssecteurs
  INNER JOIN membres_ssecteurs 
     ON ssecteurs.idSSecteur = membres_ssecteurs.idssecteur
  WHERE parent = 316 OR parent = 317 OR parent = 318
  GROUP BY ssecteurs.idSSecteur, ssecteurs.name_fr
  HAVING COUNT(membres_ssecteurs.idmembre) > 0
  ORDER BY RAND() LIMIT 25
  ) T1
ORDER BY T1.name_fr