Некоррелированная обработка
В приведенном ниже примере представлен подзапрос, начинающийся с IN и возвращающий список клиентов, имеющих высшее (High school degree) и незаконченное высшее образование (Did not complete high school).
SQL:
SELECT lastname, name FROM tbl_clients
WHERE
ed_code IN(
SELECT ed_code
FROM tbl_educ
WHERE educ ='Did not complete high school' OR educ ='High school
degree')
С концептуальной точки зрения внешний запрос и некоррелированный подзапрос (или внутренний запрос) реализуются за два шага. Сначала внутренний запрос возвращает коды, соответсвующие высшему и незаконченному высшему образованию из таблицы tbl_educ (2 и 3):
SQL:
SELECT
ed_code
FROM tbl_educ
WHERE
educ ='Did not complete high school' OR educ ='High school degree'
Затем эти значения передаются во внешний запрос, который отыскивает имена и фамилии клиентов, имеющих соответствующие значения в поле ed_code таблицы tbl_clients:
SQL:
SELECT lastname, name
FROM
tbl_clients
WHERE ed_code IN (1, 2)
Принадлежность столбцов в подзапросах таблицам неявно задается в их предложениях FROM. Это означает, что столбец в предложении WHERE внешнего запроса принадлежит таблице из предложения FROM внешнего запроса — т.е. таблице tbl_clients. Столбец ed_code в списке выбора подзапроса принадлежит таблице, указанной в предложении FROM этого подзапроса — т.е. таблице tbl_educ.