Войти

Показать полную графическую версию : Правильный ли SQL запрос?


Hector
15-12-2010, 01:15
Есть задача:

Построить SQL-запрос для выборки сведений из БД, содержащей таблицы:
Блюдо (ном_бл, назв_бл, категория) – справочник блюд;
Продукт (ном_прод; назв_прод, калорийность) – справочник продуктов;
Рецепт (ном_бл, ном_пр, кол_прод_в_блюде) – сколько некоторого продукта в некотором блюде.
Извлечь номера и названия блюд, содержащих в количестве более 100 ед. хотя бы один продукт из тех, которые содержит блюдо "Жюльен с грибами а ля рюс".

с SQL знаком поверхностно, думаю придется решать с помощью вложенных запросов, т. е. сначала найти продукты входящие в "жюльен с грибами а ля рюс", а потом выбрать те из них в которых количество ингридиентов больше 100, накропал такой код

SELECT Блюдо.ном_бл, Блюдо.назв_бл
FROM (SELECT Блюдо.ном_бл, Блюдо.назв_бл, Продукт.назв_прод, Рецепт.кол_прод_в_блюде,
FROM Рецепт, Блюдо, Продукт;
WHERE Блюдо.назв_бл='Жюльен с грибами а ля рюс') itog,
WHERE itog.кол_прод_в_блюде>100
нормальное ли это решение? (сильно не пинать :))

Delirium
15-12-2010, 01:34
неверно, у тебя рецепт, блюдо и продукт не связаны между собой по ключевым полям. Попробуй так:

SELECT Блюдо.ном_бл, Блюдо.назв_бл FROM Рецепт, Блюдо, Продукт where
Рецепт.ном_бл=Блюдо.ном_бл AND
Продукт.ном_прод=Рецепт.ном_пр AND
Блюдо.назв_бл='Жюльен с грибами а ля рюс' AND
Рецепт.кол_прод_в_блюде >100

Hector
15-12-2010, 01:36
Delirium, дело в том, что исходных данных нет, есть только условие, т. е. практически проверить решение трудновато

Delirium
15-12-2010, 02:22
Hector, в таких случаях я быстренько клепаю таблицы в Access и создаю тестовые записи. На их основе делаю запросы.




© OSzone.net 2001-2012