У меня есть 3 таблицы базы данных. Первый, содержащий ингредиенты, второй, содержащий блюда, и третий, который объединяет как ингредиенты, так и блюда.SQL Объединяет вопрос
Добавление данных для этих таблиц было легко, но я столкнулся с проблемой при попытке выбрать конкретное содержание.
Восстанавливает все ингредиенты для конкретного блюда.
SELECT *
FROM Ingredient As I
JOIN DishIngredients as DI
ON I.ID = DI.IngredientID
WHERE DI.DishID = 1;
Но если я стараюсь не запрашивать блюдо Название и описание независимо от того, какие о присоединиться я использую я всегда получаю количество результатов, равное количеству используемых ингредиентов. Если у меня есть 4 ингредиента в моем блюде, тогда выбор возвращает имя и описание 4 раза, как я могу изменить свой выбор, чтобы выбрать эти значения только один раз?
Вот результат моего запроса (так же, как и у ястребов), если я попытаюсь выбрать «Имя и описание». Я использую MS SQL.
ID Name Description DishID IngredientID
-- -------------------- -------------------------------------------------------------------- ------ ---------
1 Spaghetti Carbonara This delcitious pasta is made with fresh Panceta and Single Cream 1 1
1 Spaghetti Carbonara This delcitious pasta is made with fresh Panceta and Single Cream 1 2
Запрос Kuzgun отлично подходит для меня. Однако из ваших предложений я вижу, что мне действительно не нужно соединяться между DishIngredient и Dish. Когда мне нужно имя и я могу! Описание просто пойти на
SELECT * FROM Dish WHERE ID=1;
Wehn мне нужен список Ингредиент я могу использовать выше запрос.
«Если я попытаюсь запросить имя и описание блюд, независимо от того, какой тип соединения я использую, я всегда получаю количество результатов, равное количеству используемых ингредиентов». Если это то, чего вы хотите, вам не требуется соединение. – dasblinkenlight
Можете ли вы привести пример того, что вы хотите, и каков ваш запрос? А также укажите, какие dbms вы используете? mysql/sql server ... – unlimit