![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Перечь таблиц, из которых производится выборка данных, указывается в секции FROM. Выборка возможна как из одной таблицы, так и из нескольких логически взаимосвязанных. Логическая взаимосвязь осуществляется с помощью подсекции JOIN. На каждую логическую связь пишется отдельная подсекция. Внутри подсекции указывается условие связи двух таблиц (обычно по условию равенства первичных и вторичных ключей). Примеры для модели данных Сотрудники-Отделы-Города:
Employees | ||||
TabNum | Name | ![]() | DeptNum | Salary |
Иванов | Начальник | |||
Петров | Инж. | |||
Сидоров | Менеджер |
Departments | ||
![]() | City | Name |
Производственный отдел | ||
Отдел продаж |
Cities | |
City | Name |
Минск | |
Москва |
SELECT Employees.TabNum, Employees.Name,Departments.Name
FROM Employees
JOIN Departments ON Employees.DeptNum =
Departments.DeptNum
Результат запроса будет выглядеть следующим образом:
Иванов | Производственный отдел | |
Петров | Производственный отдел | |
Сидоров | Отдел продаж |
SELECT Employees.TabNum, Employees.Name, Departments.Name, Cities.Name
FROM Employees
JOIN Departments ON Employees.DeptNum = Departments.DeptNum
JOIN Cities ON Departments.City = Cities.City
Результат запроса будет выглядеть следующим образом:
Иванов | Производственный отдел | Минск | |
Петров | Производственный отдел | Минск | |
Сидоров | Отдел продаж | Москва |
Пример связывания таблиц по нескольким полям:
SELECT Table1.Field1, Table2.Field2
FROM Table1
JOIN Table2
ON Table2.ID1 =Table1.ID1
AND Table2.ID2 =Table1.ID2
AND ….
Существует несколько типов связывания:
Тип | Результат |
JOIN | Внутреннее соединение. В результирующем наборе присутствуют только записи, значения связанных полей в которых совпадают |
LEFT JOIN | Левое внешнее соединение. В результирующем наборе присутствуют все записи из Table1 и соответствующие им записи из Table2. Если соответствия нет – поля из Table2 будут пустыми |
RIGHT JOIN | Правое внешнее соединение. В результирующем наборе присутствуют все записи из Table2 и соответствующие им записи из Table1. Если соответствия нет – поля из Table1 будут пустыми |
FULL JOIN | Полное внешнее соединение. Комбинация двух предыдущих. В результирующем наборе присутствуют все записи из Table1 и соответствующие им записи из Table2. Если соответствия нет – поля из Table2 будут пустыми. Записи из Table2, которым не нашлось пары в Table1, тоже будут присутствовать в результирующем наборе. В этом случае поля из Table1 будут пустыми. |
CROSS JOIN | Cartesian product. Результирующий набор содержит все варианты комбинации строк из Table1 и Table2. Условие соединения при этом не указывается. |
Проиллюстрируем каждый тип примерами. Модель данных:
Table1 | |
Key1 | Field1 |
A | |
B | |
C |
Table2 | |
Key2 | Field2 |
AAA | |
BBB | |
CCC | |
DDD |
SELECT Table1.Field1, Table2.Field2
FROM Table1
JOIN Table2 ON Table1.Key1 = Table2.Key2
Результат:
A | AAA |
B | BBB |
B | CCC |
SELECT Table1.Field1, Table2.Field2
FROM Table1
LEFT JOIN Table2 ON Table1.Key1 = Table2.Key2
Результат:
A | AAA |
B | BBB |
B | CCC |
C |
SELECT Table1.Field1, Table2.Field2
FROM Table1
RIGHT JOIN Table2 ON Table1.Key1 = Table2.Key2
Результат:
A | AAA |
B | BBB |
B | CCC |
DDD |
SELECT Table1.Field1, Table2.Field2
FROM Table1
FULL JOIN Table2 ON Table1.Key1 = Table2.Key2
Результат:
A | AAA |
B | BBB |
B | CCC |
DDD | |
C |
SELECT Table1.Field1, Table2.Field2
FROM Table1
CROSS JOIN Table2
Результат:
Дата публикования: 2014-11-18; Прочитано: 435 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!