[英]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.