Шаг 190.
Основы языка Python.
Основы SQLite. Выбор записей из нескольких таблиц (окончание)

    На этом шаге мы рассмотрим использование оператора 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.




Предыдущий шаг Содержание Следующий шаг