2013-06-15 4 views
0

У меня вопрос о запросе в MS Access. У моей базы данных есть рецепты приготовления, и у меня есть запрос, который вернет все блюда, которые могут быть сделаны с доступными ингредиентами.Фильтрация таблицы SQL-запросов

Привлеченные отношения:

Ingredients (Ingredient_name, Quantity)

Contains (Meal_name, Ingredient, Ingredient_amount_needed)

Meals (Meal_name, Price)

(Bolded первичные ключи)

Я знаю, как сделать новую таблицу, которая будет состоять из блюд, ингредиентов, необходимого количества и доступного количества. Я также могу добавить условие (необходимое количество < доступного количества). Тем не менее, Мне нужно отфильтровать все блюда, у которых нет ВСЕХ необходимых ингредиентов, даже если это всего лишь один. Например, если у меня есть строки, такие как:

Meal  Ingr.  Needed qty Available qty 
Pizza  Ham   50   100 
Pizza  Cheese  100  1 

Результат моего запроса не должен показывать пиццы на всех, потому что там не хватает сыра.

+0

что вы пытаетесь спросить? – user2407394

+0

Я пытаюсь спросить, что такое SQL-код для такого запроса. – user2488763

+0

OK, попробуйте мой ответ .. !! – user2407394

ответ

1

Если вы создали Новая_таблицу, как вы показали, следующий запрос должен работать:

select Distinct Meal from NewTab NT 
where not exists 
    (select 1 from NewTab where NeededQty>AvailableQty 
    and NT.Meal = Meal); 
+0

Пожалуйста, дайте мне знать, если он будет служить вашей цели? – user2407394

+0

По какой-то причине в этом списке отображается пустая таблица, хотя она должна работать. Вероятно, я ошибся, я перепроверю. Тем не менее, я понимаю, что вы пытались сделать, и вы дали мне идею, поэтому она должна работать в конце концов, спасибо. – user2488763

+0

ОК, я проверил эту часть с образцами данных, она работает нормально. Все, что вам нужно сделать, это создать «производную таблицу/временную таблицу» и поставить вместо NewTab .. !! – user2407394