У меня есть таблицы: juices
, juice_ingredients
и ingredients
.Запрос, возвращающий несколько одинаковых строк вместо одного
Таблица juices
имеет атрибуты:
- имя
- штрих
juice_ingredients
Таблица содержит атрибуты:
- juice_id
- ingredient_id
И ingredients
таблицы имеет
- имя
- факультативные (булево)
Ради логистики клиента различных соков могут иметь один и тот же штрих-код, но с различными ингредиентами, некоторые из которых являются необязательными Мне нужно выбрать по штрих-коду, единственный сок, который не содержит ингредиентов, не содержит ингредиентов.
Я подписал четыре ингредиента: вода (необязательно: ложная), сахар (необязательно: истина), целлюлоза ананаса (необязательно: ложная) и мята (необязательно: истина). И подписал четыре сока: один только с водой и ананасовой мякотью, другой с водой, ананасовой мякотью и сахаром, другой с водой, мякотью ананаса и мятой, а другой с водой, мякотью ананаса, мятой и сахаром. Все с тем же штрих-кодом. Я делаю запрос, чтобы выбрать только сок сделать с необязательными ингредиентами, в данном случае воды и ананасовой целлюлозы.
SELECT *
FROM juices
INNER JOIN juice_ingredients ON (juice_ingredients.juice_id = juices.id)
INNER JOIN ingredients ON (juice_ingredients.ingredient_id = ingredients.id)
WHERE juices.barcode = '000000000001' AND ingredients.optional = false
Но он возвращал несколько строк. Что должно изменить этот запрос, чтобы привести только один или сок, не содержащий никаких дополнительных ингредиентов в композиции?
вы пробовали 'DISTINCT', т. е. как' SELECT DISTINCT ..... ' –
Чтобы сделать его более понятным и понятным: вы хотите видеть строки« соков », на которые не ссылается« сок_индивидуальный »(вы на самом деле хотите только см. те, которые имеют данный штрих-код, и вы ожидаете, что будете только одним из этих ки без обозначения даты Но согласен ли я с моим упрощением? Если да, опубликуйте полные определения 'juices' и' juice_ingredients'.) –