Объединение таблиц (внешнее объединение)





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

В результирующей таблице есть только те пользователи, которые создавали темы. А по условиям задачи надо, чтобы выводились все имена. Для этого немного изменим запрос:

SELECT users.name, topics.topic_name FROM users

LEFT OUTER JOIN topics ON users.id_user=topics.id_author;

В итоге получаем желаемый результат – все пользователи и темы, ими созданные. Если пользователь не создавал тему, то в соответствующем столбце стоит значение NULL.

Итак, в запрос было добавлено ключевое слово – LEFT OUTER JOIN, указывающее, что из таблицы слева надо взять все строки, и произошла замена ключевого слова WHERE на ON. Кроме ключевого слова LEFT OUTER JOIN может быть использовано ключевое слово RIGHT OUTER JOIN. Тогда будут выбираться все строки из правой таблицы и имеющиеся связанные с ними из левой таблицы. И наконец, возможно полное внешнее объединение, которое извлечет все строки из обеих таблиц и свяжет между собой те, которые могут быть связаны. Ключевое слово для полного внешнего объединения – FULL OUTER JOIN.

Изменим в запросе левостороннее объединение на правостороннее:

Как видно, теперь есть все темы (все строки из правой таблицы), а вот пользователи только те, которые темы создавали (т.е. из левой таблицы выбираются только те строки, которые связаны с правой таблицей). К сожалению, полное объединение СУБД MySQL не поддерживает.

Синтаксис для внешнего объединения следующий:

SELECT имя_таблицы_1.имя_столбца, имя_таблицы_2.имя_столбца FROM имя_таблицы_1 ТИП ОБЪЕДИНЕНИЯ имя_таблицы_2 ON условие_объединения; где ТИП ОБЪЕДИНЕНИЯ – либо LEFT OUTER JOIN, либо RIGHT OUTER JOIN.

 






Дата добавления: 2018-05-10; просмотров: 18; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2018 год. Материал предоставляется для ознакомительных и учебных целей. | Обратная связь
Генерация страницы за: 0.006 сек.