![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
|
Перечь таблиц, из которых производится выборка данных, указывается в секции FROM. Выборка возможна как из одной таблицы, так и из нескольких логически взаимосвязанных. Логическая взаимосвязь осуществляется с помощью подсекции JOIN. На каждую логическую связь пишется отдельная подсекция. Внутри подсекции указывается условие связи двух таблиц (обычно по условию равенства первичных и вторичных ключей). Примеры для модели данных Сотрудники-Отделы-Города:
| Employees | ||||
| TabNum | Name | Position
| DeptNum | Salary |
| Иванов | Начальник | |||
| Петров | Инж. | |||
| Сидоров | Менеджер |
| Departments | ||
DeptNum
| 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
Результат:
| A | AAA |
| A | BBB |
| A | CCC |
| A | DDD |
| B | AAA |
| B | BBB |
| B | CCC |
| B | DDD |
| C | AAA |
| C | BBB |
| C | CCC |
| C | DDD |
Дата публикования: 2014-11-18; Прочитано: 477 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!
