Этот запрос выдает информацию о продуктах, их цене и наличии на складе, необходимых для приготовления блюд на основе молока.
В любой ситуации, где вы можете использовать реляционный оператор сравнения (=), вы можете использовать IN. В отличие от реляционных операторов, IN не может заставить команду потерпеть неудачу, если больше чем одно значение выбрано подзапросом. Заметим, что использование IN соответствует операции пересечения реляционной алгебры, а NOT IN разности.
Использование одной и той же таблицы во внешнем и вложенном подзапросе
Пример 28.
Выдать номера Блюд, в состав которых входят продукты, необходимые для приготовления сырников.
SELECT DISTINCT Блюдо
FROM Соcтав
WHERE Продукт IN ( SELECT Продукт
FROM Состав
WHERE Блюдо = 18);
Отметим, что ссылка на Состав во вложенном подзапросе означает не то же самое, что ссылка на Состав во внешнем запросе. В действительности, два имени Состав обозначают различные значения. Чтобы этот факт стал явным, полезно использовать псевдонимы, например, С1 и С2: