Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsia_SQL_2.doc
Скачиваний:
13
Добавлен:
09.12.2018
Размер:
154.62 Кб
Скачать

Пример 3. Выбрать сведения о сотрудниках отдела о100, индивидуальный коэффициент которых выше 1,5.

SELECT ФИО, [Код отдела], [Индивидуальный коэффициент]

FROM Штаты

WHERE [Код отдела])="О100" AND [Индивидуальный коэффициент] >1.5;

ФИО

Код отдела

Индивидуальный коэффициент

Белов П.Д.

О100

1,8

Пашков А.А

О100

1,6

Рожков А.Р.

О100

1,6

Кроме того, в предложении WHERE может указываться условие связывания таблиц, если выбор производится не из одной таблицы, а из нескольких.

Таким образом, SQL-запрос обеспечивает возможность определять связи между множеством таблиц и отображать содержащуюся в них информацию в терминах этих связей в рамках единственной команды. Операции такого рода называются соединением (join) и являются одним из самых мощных преимуществ реляционных БД.

Объединение записей в многотабличном запросе в SQL ANSI

При операции соединения имена таблиц перечисляются через запятую в предложении FROM. Предикат (условие) запроса может ссылаться на любой столбец любой из соединяемых таблиц и использоваться для установления связей между ними. Записи из двух таблиц объединяются при обнаружении совпадающих значений в объединяемых полях. При этом поля должны иметь одинаковый тип данных, но могут иметь разные имена. Обычно предикат сравнивает значения в столбцах различных таблиц для того, чтобы определить, выполняется ли условие WHERE.

Например,

Должности.[Код должности] = Штаты.[Код должности] или

Отделы.[Код отдела]= Штаты.[Код отдела]

Объединение записей в многотабличном запросе в субд access (sql ядра Jet).

Для любой пары связных таблиц может быть выбран один из трех способов объединения записей:

  • способ 1 – объединение только тех записей, в которых связные поля обеих таблиц совпадают. В этом случае SQL ядра Access объединяет их, используя операцию INNER JOIN как часть параметра FROM. Объединение производится при условии равенства полей, приведенных после ключевого слова ON, в записях таблиц, указанных в операции INNER JOIN. Например,

FROM Отделы INNER JOIN [Штаты]

ON Отделы.[Код отдела] = [Штаты].[Код отдела]

  • способ 2 объединение тех записей, в которых связные поля обеих таблиц совпадают, а также объединение всех записей из первой таблицы, для которых нет связных во второй, с пустой записью второй таблицы. В этом случае SQL ядра Access объединяет их, используя операцию LEFT JOIN (левое внешнее объединение) как часть параметра FROM. Объединение производится при условии равенства полей, приведенных после ключевого слова ON, в записях таблиц, указанных в операции LEFT JOIN. Например,

FROM Отделы LEFT JOIN [Штаты]

ON Отделы.[Код отдела] = [Штаты].[Код отдела]

Самостоятельно: В таблицу Отделы добавьте Отдел Дизайна (код О107) и проверьте объединение на примере любого запроса. Удалите внесенную запись.

  • способ 3 – объединение тех записей, в которых связанные поля обеих таблиц совпадают, а также объединение всех записей из второй таблицы, для которых нет связанных в первой, с пустой записью первой таблицы. В этом случае SQL ядра Access объединяет их, используя операцию RIGHT JOIN (правое внешнее объединение) как часть параметра FROM. Объединение производится при условии равенства полей, приведенных после ключевого слова ON, в записях таблиц, указанных в операции RIGHT JOIN. Например,

FROM Отделы RIGHT JOIN [Штаты]

ON Отделы.[Код отдела] = [Штаты].[Код отдела]

Самостоятельно. В таблицу Штаты добавьте запись, касающуюся сотрудника, работающего в отделе О107 и проверьте объединение на примере любого запроса. При этом в таблицу Отделы отдел с кодом О107 добавлять не нужно. Удалите внесенную запись.

SQL ANSI при любом способе объединения таблиц оформляет объединение как часть условия WHERE:

WHERE Менеджеры.[№ менеджера]=[Клиенты-счета].[№ менеджера]

Пример 4. Выбор данных из двух таблиц.1

Вывести информацию о сотрудниках (ФИО, Должность, Стаж, Индивидуальный коэффициент), которые работают в компании менее 10 лет, но имеют Индивидуальный коэффициент выше 1.4. Использовать таблицы Должности и Штаты.

SELECT ФИО, Должность, [Индивидуальный коэффициент], Стаж

FROM Должности, Штаты

WHERE [Индивидуальный коэффициент]>=1.4 AND Стаж>=#1/1/2002#

AND Должности.[Код должности] = Штаты.[Код должности];

ФИО

Должность

Индивидуальный коэффициент

Стаж

Иванова Т.М.

Психолог

1,5

01.11.2006

Пример 6. Обновление значений поля с использованием данных из двух таблиц.

Рассчитать поле Оклад таблицы Штаты.

UPDATE Должности, Штаты SET

Оклад = [Индивидуальный коэффициент]*Ставка

WHERE Должности.[Код должности] = Штаты.[Код должности];

!!! Для следующих запросов повысить всем ставки с помощью UPDATE в два раза.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]