Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






SELECT p.Продукт, Цена





FROM Продукты p JOIN Наличие n ON p.ID_продукта = n.Продукт

WHERE Цена = (SELECT MIN (Цена) FROM Наличие);

Результат  
Продукт Цена
Зелень 34,96

 

Подзапрос ищет минимальную цену в таблице Наличие, а основной запрос выбирает продукты с найденной ценой.

Следует заметить, что если агрегатные функции используются с предложением GROUP BY, то подзапрос может вернуть многочисленные значения. Они, следовательно, не допустимы в подзапросах такого характера. Даже если GROUP BY и HAVING используются таким способом, что только одна группа выводится с помощью подзапроса, команда будет отклонена в принципе.

Если не удается построить подзапрос, возвращающий единственное значение вы должны использовать предикаты IN, ANY или ALL. Но следует заметить, что предикаты BETWEEN, LIKE, и IS NULL не могут использоваться с подзапросами

Следует отметить все подзапросы в качестве результата должны возвращать одиночный столбец или одиночное выражение (может быть основано на нескольких столбцах). Это обязательное требование, поскольку результат запроса сравнивается с одиночным значением. Исключением из этого правила является ситуация, когда подзапросы используются с оператором EXISTS, который мы будем рассматривать ниже.

Подзапросы в предложении HAVING.

Подзапросы могут использоваться внутри предложения HAVING.

Пример 30.

Найти самые дешевые блюда.

SELECT b.Блюдо,

cast(SUM (s.Вес*n.Цена/1000)+b.Труд as numeric(6,2)) as Стоимость

FROM (Блюда b JOIN Состав s ON b.ID_блюда =s.Блюдо)

JOIN Наличие n ON s.Продукт = n.Продукт

GROUP BY b.Блюдо, b.Труд

HAVING (SUM (s.Вес*n.Цена/1000)+b.Труд) = (SELECT MIN(стоимость)

FROM (SELECT b.Блюдо, SUM (s.Вес*n.Цена/1000)+b.Труд as Стоимость

FROM (Блюда b JOIN Состав s ON b.ID_блюда = s.Блюдо)

JOIN Наличие n ON s.Продукт = n.Продукт







Date: 2015-09-18; view: 317; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.004 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию