Читайте также:
|
|
Начнем с самого простого: поместим таблицы employee и department
в блок from запроса и посмотрим, что произойдет. Вот запрос, выбираю_ щий имена и фамилии сотрудников, а также название отдела. Здесь
в блоке from указаны обе таблицы, разделенные ключевым словом join:
mysql> SELECT e.fname, e.lname, d.name
_> FROM employee e JOIN department d;
+__________+___________+________________+ | fname | lname | name | +__________+___________+________________+
| Michael | | Smith | | Operations | | |
| Susan | | Barker | | Operations | | |
| Robert | | Tyler | | Operations | | |
| Susan | | Hawthorne | Operations | | | |
| John | | Gooding | | Operations | | |
| Helen | | Fleming | | Operations | | |
| Chris | | Tucker | | Operations | | |
| Sarah | | Parker | | Operations | | |
| Jane | | Grossman | | Operations | | |
| Paula | | Roberts | | Operations | | |
| Thomas | | Ziegler | | Operations | | |
| Samantha | | Jameson | | Operations | | |
| John | | Blake | | Operations | | |
| Cindy | | Mason | | Operations | | |
| Frank | | Portman | | Operations | | |
| Theresa | | Markham | | Operations | | |
| Beth | | Fowler | | Operations | | |
| Rick | | Tulman | | Operations | | |
Глава 5. Запрос к нескольким таблицам | |||
| Michael | | Smith | | Loans | | |
| Susan | | Barker | | Loans | | |
| Robert | | Tyler | | Loans | | |
| Susan | | Hawthorne | | Loans | | |
| John | | Gooding | | Loans | | |
| Helen | | Fleming | | Loans | | |
| Chris | | Tucker | | Loans | | |
| Sarah | | Parker | | Loans | | |
| Jane | | Grossman | | Loans | | |
| Paula | | Roberts | | Loans | | |
| Thomas | | Ziegler | | Loans | | |
| Samantha | | Jameson | | Loans | | |
| John | | Blake | | Loans | | |
| Cindy | | Mason | | Loans | | |
| Frank | | Portman | | Loans | | |
| Theresa | | Markham | | Loans | | |
| Beth | | Fowler | | Loans | | |
| Rick | | Tulman | | Loans | | |
| Michael | | Smith | | Administration | | |
| Susan | | Barker | | Administration | | |
| Robert | | Tyler | | Administration | | |
| Susan | | Hawthorne | | Administration | | |
| John | | Gooding | | Administration | | |
| Helen | | Fleming | | Administration | | |
| Chris | | Tucker | | Administration | | |
| Sarah | | Parker | | Administration | | |
| Jane | | Grossman | | Administration | | |
| Paula | | Roberts | | Administration | | |
| Thomas | | Ziegler | | Administration | | |
| Samantha | | Jameson | | Administration | | |
| John | | Blake | | Administration | | |
| Cindy | | Mason | | Administration | | |
| Frank | | Portman | | Administration | | |
| Theresa | | Markham | | Administration | | |
| Beth | | Fowler | | Administration | | |
| Rick | | Tulman | | Administration | |
+__________+___________+________________+ 54 rows in set (0.00 sec)
Хм… у нас только 18 сотрудников и 3 разных отдела. Но как же полу_ чилось, что в результирующем наборе оказалось 54 строки? Пригля_ девшись, можно заметить, что каждый из 18 сотрудников встречается трижды. При этом все его данные идентичны, кроме названия отдела. Поскольку запрос не определил, как должны быть соединены эти две таблицы, сервер БД сгенерировал Декартово произведение, т. е. все воз_ можные перестановки двух таблиц (18 сотрудников умножить на 3 от_дела получается 54 перестановки). Такой тип соединения называют пе_ рекрестным соединением (cross join). Его редко используют (намерен_но, по крайней мере). Перекрестные соединения – один из типов соеди_ нений, которые будут изучаться в главе 10.
Что такое соединение? | |
Дата добавления: 2015-08-17; просмотров: 49 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Что такое соединение? | | | Внутренние соединения |