В дополнение к условиям соединения таблиц можно использовать WHERE
для дополнительных ограничений на строки.
Запрос выполняется следующим образом:
- За результат выполнения запроса берутся все строки из первой таблицы предложения
FROM
- Для каждой строки из результата выполнения запроса отбираются строки из второй таблицы из
FROM
по условиям соединения. В результате для каждой строки из первой таблицы в результирующей выборке получается столько строк, сколько строк нашлось во второй таблице по условиям соединения. - Пункт 2 выполняется для каждой таблицы из предложения
FROM
. - Из строк, полученных в пунктах 1 - 3, остаются те, для которых условие в
WHERE
будет истинно.
По факту на сервере запрос может выполняться по другому (с оптимизацией, планами запросов, планировщиком будем разбираться в последующих курсах), на текущем этапе нас интересует только логика определения результата запроса.
Получим информацию городах во временной зоне 'UTC+3'
:
SELECT c.city_id,
c.name,
t.time_offset
FROM city c
JOIN timezone t
ON t.timezone_id = c.timezone_id
WHERE time_offset = 'UTC+3'
ORDER BY name