На этом шаге мы рассмотрим использование оператора JOIN.
Связать таблицы позволяет также оператор JOIN, который имеет два синонима: CROSS JOIN и INNER JOIN. Переделаем наш пример из предыдущего шага с использованием оператора JOIN:
Рис.1. Использование оператора JOIN
Инструкцию WHERE можно заменить инструкцией ON, также в инструкции WHERE можно указать дополнительное условие. Для примера выведем сайты, зарегистрированные в рубрике с идентификатором 1:
Рис.2. Пример использования инструкции ON
Если названия связующих полей в таблицах являются одинаковыми, то вместо инструкции ON можно использовать инструкцию USING:
Рис.3. Пример использования инструкции USING
Оператор JOIN объединяет все записи, которые существуют во всех связующих полях. Например, если попробовать вывести количество сайтов в каждой рубрике, то мы не получим рубрики без зарегистрированных сайтов:
Рис.4. Рубрики с зарегистрированными сайтами
В этом примере мы не получили количество сайтов в рубрике Музыка, т. к. в этой рубрике нет сайтов. Чтобы получить количество сайтов во всех рубриках, необходимо использовать левостороннее объединение. Формат левостороннего объединения:
<Таблица1> LEFT [OUTER] JOIN <Таблица2> ON <Таблица1>.<Поле1>=<Таблица2>.<Поле2> | USING (<Поле>)
При левостороннем объединении возвращаются записи, соответствующие условию, а также записи из таблицы <Таблица1>, которым нет соответствия в таблице <Таблица2> (при этом поля из таблицы <Таблица2> будут иметь значение NULL). Выведем количество сайтов в рубриках и отсортируем по названию рубрики:
Рис.5. Пример использования левостороннего объединения
На следующем шаге мы рассмотрим условия в инструкциях WHERE и HAVING.