Как иметь три счета в одном запросе SQL и будет отображать 3 отдельных результатов в MySQL?

0

У меня две таблицы. Моя первая таблица - animal_tbl, вторая - animal_ate_tbl и food_type_tbl.

это визуализация animal_tbl:

Изображение 174551

animal_ate_tbl:

Изображение 174551

food_type_tbl

Изображение 174551

Я хочу запрос, который выберет: 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

Однако это должен быть выход:

Изображение 174551

Я пообещаю, что я дам преимущество тем, кто ответит. Кстати, таблица - это только примерная таблица, которую я делаю.

  • 0
    В будущем, пожалуйста, публикуйте образцы данных в виде предварительно отформатированного, разделенного пробелами и выровненного текста вместо снимков экрана.
  • 0
    спасибо дай :) тоже извините
Теги:

1 ответ

1
Лучший ответ

Попробуйте это вместо этого:

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,''));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню