Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Сравнение эквисоединений с неэквисоединениями

Символы маски | Регулярные выражения | Упражнения | Что такое соединение? | Декартово произведение | Внутренние соединения | ANSI_синтаксис соединения | Соединение трех и более таблиц | Применение подзапросов в качестве таблиц | Повторное использование таблицы |


Читайте также:
  1. Влияние ОЭЗ «Алабуга» на экономику Республики Татарстан и Российской Федерации. Сравнение с другими типами ОЭЗ по РФ
  2. Задание для самостоятельного моделирования. Сравнение различных типов реакторов
  3. Здесь мы видим сравнение внутрених сторон подгузников Cutie Quilt (внизу) и Moony (вверху).
  4. Здесь мы видим сравнение толщины подгузника Cutie Guilt (внизу) и подгузника Moony (вверху).
  5. Пенобетон — сравнение с другими материалами.
  6. Почему сравнение приносит только вред
  7. Сравнение власти, богатства и преимуществ царских с истинным и христианским любомудрием монашеской жизни

 

Все запросы к нескольким таблицам, показанные до сих пор, исполь_ зовали эквисоединения (equi_joins). Это означает, что для обеспечения успешности соединения значения двух таблиц должны совпадать. Эк_ висоединение всегда использует знак равенства, например:

 

ON e.assigned_branch_id = b.branch_id

 

Подавляющее большинство запросов использует эквисоединения, но можно также соединять таблицы посредством диапазонов значений, называемых неэквисоединениями (non_equi_joins). Вот пример запроса, осуществляющего соединение по диапазону значений:

 

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 = 'no_fee checking';

 

Этот запрос соединяет две таблицы, между которыми нет взаимосвя_ зей по внешним ключам. Задача – найти всех сотрудников, принятых в банк в то время, когда предлагалась услуга беспроцентного текущего вклада. Таким образом, дата начала работы сотрудника должна нахо_ диться между датами начала и конца этой акции.

 

Также может понадобиться рекурсивное неэквисоединение (self_non_ equi_join), которое означает, что таблица соединяется сама с собой с ис_пользованием неэквисоединения. Например, управляющий операция_ ми решил провести шахматный турнир между всеми операциониста_ ми банка. Требуется создать список всех пар игроков. Можно попробо_ вать получить список всех операционистов (title = 'Teller'), соединив таблицу employee с самой собой, и выбрать из него все строки с разными значениями emp_id (поскольку игрок не может составить пару с самим собой):

 

mysql> SELECT e1.fname, e1.lname, 'VS' vs, e2.fname, e2.lname

 


Дата добавления: 2015-08-17; просмотров: 133 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Рекурсивные соединения| Gt; FROM employee e1 INNER JOIN employee e2

mybiblioteka.su - 2015-2024 год. (0.007 сек.)