簡體   English   中英

MySQL-我需要嵌套查詢嗎?

[英]MySQL - Do I need a nested query?

我需要編寫一個查詢,為每個活動顯示男性和女性人數的計數。

最好采用3列格式,activity_name,男性(計算列),女性(計算列)。

我想我可能需要使用嵌套查詢,但是我不知道怎么做。 還是可以僅使用GROUP BY來完成?

我的表是:

孩子 child_id child_fname child_sname child_gender等

活動 activity_id activity_name等

Child_Activity_Item child_id activity_id

謝謝

這是您要尋找的:

SELECT  MaleList.Activity_Name,
        MaleList.totalMale,
        FemaleList.totalFemale,
FROM
(
    SELECT  a.Activity_ID, 
            a.Activity_Name,
            COUNT(c.child_gender) totalMale
    FROM    Activity a 
                INNER JOIN Child_Activity_Item b
                    on a.activity_id = b.activity_ID
                INNER JOIN Child c
                    on b.child_id =  c.child_id
    WHERE   c.child_gender = 'male'
    Group BY a.Activity_ID
) as MaleList INNER JOIN
(
    SELECT  a.Activity_ID, 
            a.Activity_Name,
            COUNT(c.child_gender) totalFemale
    FROM    Activity a 
                INNER JOIN Child_Activity_Item b
                    on a.activity_id = b.activity_ID
                INNER JOIN Child c
                    on b.child_id =  c.child_id
    WHERE   c.child_gender = 'female'
    Group BY a.Activity_ID
) as FemaleList 
    ON  MaleList.Activity_ID =  FemaleList.Activity_ID

您無法直接獲得三列結果,因為只有一列包含性別。

試試這個查詢-

SELECT
  a.activity_id,
  a.activity_name,
  COUNT(IF(c.child_gender = 'M', c.child_gender, NULL)) male,
  COUNT(IF(c.child_gender = 'F', c.child_gender, NULL)) female
FROM
  Activity a
  JOIN Child_Activity_Item ca
    ON ca.activity_id = a.activity_id
  JOIN Child c
    ON c.child_id = ca.child_id
GROUP BY a.activity_id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM