кодесурса
«SQLite

SQLite LEFT JOIN или LEFT OUTER JOIN

script1adsense2code
script1adsense3code

Что такое левое соединение или левое внешнее соединение в SQLite?

Операция Left Join или Left Outer Join принимает два отношения A и B и возвращает внутреннее объединение A и B вместе с несопоставленными строками A. A является первым отношением, определенным в предложении FROM, и, следовательно, является левым отношением. Левое объединение включает в себя несопоставленные строки левого отношения вместе с сопоставленными столбцами в результате.

SQLite LEFT JOIN объединяет две таблицы и выбирает строки на основе условия, которое совпадает в обеих таблицах, и несопоставленные строки также будут доступны из таблицы, написанной перед предложением JOIN.

Таким образом, в случае LEFT JOIN или LEFT OUTER JOIN, SQLite -

1. берет все выбранные значения из левой таблицы

2. объединяет их с именами столбцов (указанными в условии) из правой таблицы

3. получить соответствующие строки из обеих связанных таблиц.

4. устанавливает значение каждого столбца из правой таблицы в NULL, что не соответствует левой таблице.

Синтаксис:

Вот основной синтаксис.

 ВЫБЕРИТЕ результат
ИЗ таблицы 1
ВЛЕВО [ВНЕШНИЙ] РЕЙТИНГ table2
ON table1.keyfield1 = table2.keyfield2
[ГДЕ expr]

Иллюстрированная презентация

Предположим, что у нас есть две таблицы таблица-A и таблица-B. Уникальными столбцами для двух таблиц являются ID. Значения в столбце ID для таблицы-A составляют 210 211 212 и 213, а значения для таблицы B - 210 214 212 212 и 212. Вот графическое представление.

«внутренний

Пример: SQLite LEFT JOIN или LEFT OUTER JOIN

ЛЕВОЕ СОЕДИНЕНИЕ сохранит записи «левой» таблицы. SQLite начинается с левой таблицы. Для каждой строки из псевдонима SQLite просматривает таблицу, ссылается на то, выполнено ли условие и возвращает Patient_name и vdate. Для несопоставленных строк возвращается ноль. Каждый элемент в левой таблице будет показан в результате SQLite, даже если в другой таблице нет совпадений.

Вот примеры таблиц.

 стол - врачи
доктор_ид степень доктора_имя
---------- -------------- ----------
210 Доктор Джон Линга, доктор медицины
211 Доктор Питер Холл MBBS
212 Доктор Ке Джи Доктор медицины
213 д-р Пат Фэй, доктор медицины
стол - посещения
doctor_id имя_пользователя vdate
---------- ------------ ----------
210 Джулия Найер 2013-10-15
214 ТиДжей Олсон 2013-10-14
215 Джон Сео 2013-10-15
212 Джеймс Марлоу 2013-10-16
212 Джейсон Маллин 2013-10-12

Вот пример

Если мы хотим выяснить, какой врач посещал какого пациента, а также дату посещения, можно использовать следующий SQL.

SELECT a.doctor_id,a.doctor_name,
       c.patient_name,c.vdate
  FROM doctors a 
    LEFT JOIN visits c
     ON a.doctor_id=c.doctor_id;

Вот вывод:

 doctor_id doctor_name имя_пользователя vdate
---------- -------------- ------------ ----------
210 Доктор Джон Линга Джулия Найер 2013-10-15
211 Доктор Питер Холл
212 Доктор Ке Джи Джеймс Марлоу 2013-10-16
212 Доктор Ке Джи Джейсон Маллин 2013-10-12
213 Доктор Пэт Фэй

Из приведенного выше результата строки, обозначенные красным цветом, показывают, что указанные критерии не соответствуют для правой таблицы, то есть посещают таблицы с псевдонимом c. Doctor_id 211 и 213 не существует в таблице посещений. Таким образом, для этих несопоставленных строк он возвращает NULL в наборе результатов для псевдонима столбцов c.

Иллюстрированная презентация

«SQLite

Пример: SQLite LEFT JOIN с USING

Ключевое слово USING может быть использовано для достижения того же результата.

Вот пример

SELECT doctor_id,doctor_name,
patient_name,vdate
FROM doctors  
    LEFT JOIN visits 
     USING(doctor_id);
 

Вот вывод:

 doctor_id doctor_name имя_пользователя vdate
---------- -------------- ------------ ----------
210 Доктор Джон Линга Джулия Найер 2013-10-15
211 Доктор Питер Холл
212 Доктор Ке Джи Джеймс Марлоу 2013-10-16
212 Доктор Ке Джи Джейсон Маллин 2013-10-12
213 Доктор Пэт Фэй

Результат такой же, как в сортировщике SQL.

Пример: SQLite NATURAL LEFT OUTER JOIN

NATURAL LEFT OUTER JOIN автоматически использует все совпадающие имена столбцов для объединения.

Вот пример

SELECT doctor_id,doctor_name,
       patient_name,vdate
  FROM doctors  
    NATURAL LEFT OUTER JOIN visits;

Вот вывод:

 doctor_id doctor_name имя_пользователя vdate
---------- -------------- ------------ ----------
210 Доктор Джон Линга Джулия Найер 2013-10-15
211 Доктор Питер Холл
212 Доктор Ке Джи Джеймс Марлоу 2013-10-16
212 Доктор Ке Джи Джейсон Маллин 2013-10-12
213 Доктор Пэт Фэй

LEFT JOIN: SQL и другие реляционные базы данных

Предыдущая: ВНУТРЕННЯЯ РЕШЕНИЕ
Далее: CROSS JOIN

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code