Изучаем sql



Pdf көрінісі
бет93/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   89   90   91   92   93   94   95   96   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

Сравнение эквисоединений 
с неэквисоединениями
Все запросы к нескольким таблицам, показанные до сих пор, исполь
зовали 
эквисоединения
(
equijoins
). Это означает, что для обеспечения
успешности соединения значения двух таблиц должны совпадать. Эк
висоединение всегда использует знак равенства, например:
ON e.assigned_branch_id = b.branch_id
Подавляющее большинство запросов использует эквисоединения, но
можно также соединять таблицы посредством диапазонов значений,
называемых 
неэквисоединениями
(
nonequijoins
). Вот пример запроса,
осуществляющего соединение по диапазону значений:
SELECT e.emp_id, e.fname, e.lname, e.start_date
FROM employee e INNER JOIN product p
ON e.start_date >= p.date_offered
AND e.start_date <= p.date_retired
WHERE p.name = 'nofee checking';
Этот запрос соединяет две таблицы, между которыми нет взаимосвя
зей по внешним ключам. Задача – найти всех сотрудников, принятых
в банк в то время, когда предлагалась услуга беспроцентного текущего
вклада. Таким образом, дата начала работы сотрудника должна нахо
диться между датами начала и конца этой акции.
Также может понадобиться 
рекурсивное неэквисоединение
(
selfnon
equijoin
), которое означает, что таблица соединяется сама с собой с ис
пользованием неэквисоединения. Например, управляющий операция
ми решил провести шахматный турнир между всеми операциониста
ми банка. Требуется создать список всех пар игроков. Можно попробо
вать получить список всех операционистов (
title
=
'Teller'
), соединив
таблицу 
employee
с самой собой, и выбрать из него все строки с разными
значениями 
emp_id
(поскольку игрок не может составить пару с самим
собой):
mysql> 


Достарыңызбен бөлісу:
1   ...   89   90   91   92   93   94   95   96   ...   261




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

    Басты бет