У меня две таблицы. Моя первая таблица - animal_tbl, вторая - animal_ate_tbl и food_type_tbl.
это визуализация animal_tbl:
animal_ate_tbl:
food_type_tbl
Я хочу запрос, который выберет: animal_num, animal_fname + animal_lname, количество бананов, которые она съела, и количество яблока, которое она съела, и количество чико, которое она ела. Я создал свой собственный запрос, однако он выводит неверный результат. вы не могли бы мне помочь? Я обещаю проголосовать за того, кто может мне помочь :)) вот пример, который я получил, но не так:
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,''));