Вернуть все элементы, которые используются только один раз в таблице - PullRequest
1 голос
/ 03 февраля 2020

Перечислите названия всех ингредиентов, которые используются только в одном рецепте (1 столбец, 46 строк)

Логически, как я понимаю этот запрос, мне нужно подсчитать IngredientID в столбце Recipe_Ingredients, чтобы найти случаи, когда IngredientID появляется только один раз. Но мой запрос не возвращает никаких результатов.

Я пытался заменить count(Ingredients.IngredientID) на count(*) и sum(). Но оба результата также не дали результатов.

select Ingredients.IngredientName
from Ingredients
join Recipe_Ingredients on Ingredients.IngredientID = Recipe_Ingredients.RecipeID
group by Ingredients.IngredientName
having count(Ingredients.IngredientID) = 1;

Структура БД SQL Файл

Данные БД SQL Файл

enter image description here

Ответы [ 3 ]

3 голосов
/ 03 февраля 2020

Вы не присоединяетесь к правильному столбцу; это должно быть

Ingredients.IngredientID = Recipe_Ingredients.IngredientID

Внесение этого изменения дает правильный результат из 46 строк: demo

Обратите внимание, что подготовка dbfiddle, как я сделал, делает его намного проще для другие ответят на ваш вопрос.

2 голосов
/ 03 февраля 2020
select Ingredients.IngredientName
from Ingredients
join Recipe_Ingredients on Ingredients.IngredientID = Recipe_Ingredients.IngredientID
group by Ingredients.IngredientName
having count(Ingredients.IngredientID) = 1;
2 голосов
/ 03 февраля 2020

Получить ингредиенты, которые есть в таблице Recipe_Ingredients только один раз.

select * from Ingredients a where IngredientID in
(
select IngredientID
from Recipe_Ingredients 
group by IngredientID
having count(*) = 1
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...