Изучаем sql



Pdf көрінісі
бет83/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   79   80   81   82   83   84   85   86   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )
论文说明
93
Внутренние соединения
Чтобы изменить предыдущий запрос и получить результирующий на
бор, включающий только 18 строк (по одной для каждого сотрудника),
понадобится описать взаимосвязь двух таблиц. Я уже показал, что
связью между двумя таблицами служит столбец 
employee.dept_id
, оста
лось только добавить эту информацию в подблок 
on
блока 
from
:
mysql> 
SELECT e.fname, e.lname, d.name
> FROM employee e JOIN department d
> ON e.dept_id = d.dept_id;
++++
| fname | lname | name |
++++
| Susan | Hawthorne | 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 |
| John | Gooding | Loans |
| Michael | Smith | Administration |
| Susan | Barker | Administration |
| Robert | Tyler | Administration |
++++
18 rows in set (0.00 sec)
Теперь благодаря добавлению подблока 
on
, предписывающего серверу
соединять таблицы 
employee
и 
department
, прослеживая связь от одной
таблицы к другой по столбцу 
dept_id
, имеем вместо 54 строк ожидае
мые 18. Например, строка Сьюзен Хоторн (Susan Hawthorne) в табли
це 
employee
в столбце 
dept_id
содержит 
1
(в примере не показано). Сер
вер использует это значение для поиска строки в таблице 
department
,
столбец 
dept_id
которой содержит 
1
, и извлекает значение 
'Operations'
из столбца 
name
этой строки.
Если определенное значение столбца 
dept_id
присутствует в одной таб
лице, но его 
нет
в другой, соединение строк не происходит, и они не
включаются в результирующий набор. Такой тип соединения называ
ют 
внутренним соединением 
(
inner join
); это наиболее широко исполь
зуемый тип соединения. Поясню: если в таблице 
department
есть четвер
тая строка для отдела маркетинга, но ни один сотрудник не приписан
к нему, отдел маркетинга не попадет в результирующий набор. Анало


94

Достарыңызбен бөлісу:
1   ...   79   80   81   82   83   84   85   86   ...   261




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет