Вся предоставленная на этом сервере информация собрана нами из разных источников. Если Вам кажется, что публикация каких-то документов нарушает чьи-либо авторские права, сообщите нам об этом.
До сих пор, наши запросы имели доступ только к одному классу одновременно.
Запросам доступны несколько классов одновременно, или доступен один класс
таким образом, что многочисленные экземпляры класса обрабатываются одновременно.
Запрос, который работает с несколькими экземплярами одного или разных классов
одновременно, называется соединительный запрос.
Например, мы хотим найти все записи, которые лежат в температурном диапазоне
других записей. В действительности,
нам нужно сравнить атрибуты temp_lo и temp_hi каждого экземпляра EMP
с атрибутами temp_lo и temp_hi всех остальных экземпляров EMP.
Замечание: Это только умозрительная модель. На самом деле, соединение может
выполняться более эффективно, но это незаметно для пользователя.
Мы можем сделать это с помощью следующего запроса:
SELECT W1.city, W1.temp_lo AS low, W1.temp_hi AS high,
W2.city, W2.temp_lo AS low, W2.temp_hi AS high
FROM weather W1, weather W2
WHERE W1.temp_lo < W2.temp_lo
AND W1.temp_hi > W2.temp_hi;
+--------------+-----+------+---------------+-----+------+
|city | low | high | city | low | high |
+--------------+-----+------+---------------+-----+------+
|San Francisco | 43 | 57 | San Francisco | 46 | 50 |
+--------------+-----+------+---------------+-----+------+
|San Francisco | 37 | 54 | San Francisco | 46 | 50 |
+--------------+-----+------+---------------+-----+------+
Замечание: Семантика такого соединения, означает что ограничение выражения истинно,
для определённого декартова произведения классов, указанных в запросе.
Для тех экземпляров из декартова
произведения, для которых ограничение верно,
Postgres вычисляет и возвращает значения, указанные в списке объектов.
PostgresSQL, не принимает в внимание повторяющие значения в таких выражениях.
Это значит, что Postgres иногда пересчитывает один и тот же объект несколько раз;
это часто случается когда логические выражения соединяются с помощью
"or". Для удаления таких повторений, ты должен использовать
выражение select distinct.
В этом случае, оба W1 и W2 заменяются экземпляром
класса weather, и он действует на все экземпляры класса.
(По терминологии большинства систем баз данных,
W1 и W2 известны как переменные диапазона.)
Запрос может содержать произвольное число названий классов и суррогатов.