Выдать номера поставщиков, которые поставляют хотя бы один продукт, поставляемый поставщиком 6.
SELECT DISTINCT ПС FROM Поставки WHERE ПР IN (SELECT ПР FROM Поставки WHERE ПС = 6); |
Результат:
ПС |
Отметим, что ссылка на Поставки во вложенном подзапросе означает не то же самое, что ссылка на Поставки во внешнем запросе. В действительности, два имени Поставки обозначают различные значения. Чтобы этот факт стал явным, полезно использовать псевдонимы, например, X и Y:
SELECT DISTINCT X.ПС FROM Поставки X WHERE X.ПР IN (SELECT Y.ПР FROM Поставки Y WHERE Y.ПС = 6); |
Здесь X и Y – произвольные псевдонимы таблицы Поставки, определяемые во фразе FROM и используемые как явные уточнители во фразах SELECT и WHERE. Напомним, что псевдонимы определены лишь в пределах одного запроса.
Вложенный подзапрос с оператором сравнения, отличным от IN.
Выдать номера поставщиков, находящихся в том же городе, что и поставщик с номером 6.
SELECT ПС FROM Поставщики WHERE Город = (SELECT Город FROM Поставщики WHERE ПС = 6); |
Результат:
ПС |
В подобных запросах можно использовать и другие операторы сравнения (<>, <=, <, >= или >), однако, если вложенный подзапрос возвращает более одного значения и не используется оператор IN, будет возникать ошибка.