MariaDB Найти, где Count () = 0 - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь найти, в какие дни нет входа (recipe_course = 18), но все, что я получаю, это нулевой результат.Чего мне не хватает?

Two tables
table recipes{recipe_id, recipe_name, recipe_course}
table meals{meal_id, meal_date, meal_recipe}

Select `meal_date`
From `meals` mls
Join `recipes` rrr on mls.`meal_recipe` = rrr.`recipe_id`
Where rrr.`recipe_course` = 18
Group by `meal_date`
Having Count(`recipe_course`) = 0

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Или, используя LEFT JOIN ... IS NULL:

SELECT  m.meal_date
    FROM  meals m
    LEFT JOIN  recipes r  ON r.recipe_id = m.meal_recipe
      AND  r.recipe_course = 18
    WHERE  r.recipe_id IS NULL

Также возможно с NOT EXISTS ( SELECT * ... )

0 голосов
/ 18 мая 2018

Самый простой способ сделать это - использовать «не в»."= Найти все даты приема пищи, для которых нет recipe_course 18"

select m.meal_date
from meals m
where m.meal_recipe not in (
  select r.recipe_id
  from recipes r
  where r.recipe_course = 18
)
...