繁体   English   中英

如何在一个sql查询中包含三个计数,并在mySQL中显示3个分开的结果?

[英]How to have three counts in one sql query and will display 3 separated results in mySQL?

我有两张桌子。 我的第一个表是animal_tbl,第二个表是animal_ate_tbl和food_type_tbl。

这是animal_tbl的可视化:

在此处输入图片说明

animal_ate_tbl:

在此处输入图片说明

food_type_tbl

在此处输入图片说明

我想要一个查询,该查询将选择:animal_num,animal_fname + animal_lname,她吃的香蕉数和她吃的苹果数以及她吃的chico数。 我创建了自己的查询,但是输出错误的结果。 你能帮助我吗? 我保证投票赞成可以帮助我的人:))这是我得到的示例查询,但它是错误的:

select
    a.animal_num,
    a.animal_fname,
    a.animal_lname, 
    (
        SELECT
            COUNT(*)
        FROM
            animal_ate_tbl
        WHERE
            food_id = x22
        group by
            animal_id
    ) as banana, 
    (
        SELECT
            COUNT(*)
        FROM
            animal_ate_tbl
        WHERE
            food_id = x33
        group by
            animal_id
    ) as banana, 
    (
        SELECT
            COUNT(*)
        FROM
            animal_ate_tbl
        WHERE
            food_id = x44
        group by
            animal_id
    ) as chico
from
    animal_tbl as a,
    animal_ate_tbl
group by
     a.animal_num = animal_id

但是,这应该是输出:

在此处输入图片说明

我保证我会给那些会回答的人一个支持。 顺便说一句,该表只是我正在做的一个示例表。

尝试以下方法:

SELECT 
   A.animal_num, 
   CONCAT(IFNULL(A.animal_fname,''),' ', IFNULL(A.animal_lname,'')) fullName,
   (SUM(IF(C.food_type='banana',1,0))) banana,
   (SUM(IF(C.food_type='apple',1,0))) apple,
   (SUM(IF(C.food_type='chico',1,0))) chico
FROM animal_tbl A LEFT JOIN animal_ate_tbl B
ON A.animal_nu=B.animal_id LEFT JOIN food_type_tbl C
ON B.food_id=C.food_id
GROUP BY A.animal_num, 
         CONCAT(IFNULL(A.animal_fname,''),' ', IFNULL(A.animal_lname,''));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM