FROM inst INNER JOIN rasp ON
inst.Fam=rasp.Prep WHERE (inst.Kaf='Иностранный язык')
Однако более просто такого же результата можно добиться при выполнении следующего запроса (такой способ намного проще и на практике используется гораздо чаще):
SELECT rasp.* FROM inst, rasp
WHERE
(inst.Kaf='Иностранный язык')
AND (inst.Fam=rasp.Prep)
Этот способ также обладает тем преимуществом, что он позволяет устанавливать связь сразу между несколькими таблицами, а не только между двумя. Следует также отметить, что в условии
связи кроме знака равенства допустимо использовать и любые другие операторы сравнения.
Как видно из приведенных запросов, перед именами полей указаны имена соответствующих таблиц. Вообще говоря, если имена полей в разных таблицах не совпадают, указывать имена этих таблиц не обязательно, однако все же лучше задавать, к какой таблице относится каждое поле (когда поля таблиц имеют одинаковые имена, то имя таблицы перед именем поля приводится обязательно). Если таблица имеет длинное имя, то вместо него рекомендуется использовать псевдоним, указываемый для каждой таблицы в секции FROM.Делается это следующим образом:
SELECT DISTINCT a.Fam, b.Grup FROM inst a, rasp WHERE a.Fam=b.Prep
В результирующий набор данных войдут неповторяющиеся записи, отражающие информацию о том, в каких группах проводит занятия каждый преподаватель. В приведенном запросе вместо имен таблицы применены псевдонимы: а— для таблицы instи b- для таблицы rasp.
Описанный тип связи между двумя таблицами называется внутренней связью. Он характеризуется тем, что задается условие связи между соответствующими столбцами и выводятся только удовлетворяющие данному условию записи.
Кроме этого существует еще так называемая внешняя связь. Такая связь реализуется с помощью описателя JOINи характеризуется тем, что одна из таблиц является ведущей, а другая — ведомой, и в результирующий набор данных кроме записей, удовлетворяющих условию связи, включаются и все остальные записи ведущей таблицы, которым в соответствие ставятся пустые записи.
Какая из таблиц будет ведущей, определяет вид соединения:
■ LEFT- левое внешнее соединение, при котором ведущей является таблица, расположенная в описании слева от описателя вида соединения;
■ RIGHT- правое внешнее соединение, при котором ведущей является таблица, расположенная в описании справа от описателя вида соединения;
■ FULL- полное внешнее соединение, при котором ведущими являются обе таблицы. В результирующий набор данных включаются записи обеих таблиц по следующему алгоритму. Прежде всего, в набор данных включаются все записи, удовлетворяющие условию соединения. Параллельно с этим добавляются записи первой таблицы, не удовлетворяющие условию соединения. Им в соответствие ставятся пустые записи. Аналогичным образом включаются в набор данных все не удовлетворяющие условию соединения записи второй таблицы, которые также объединяются с пустыми записями.
Рассмотрим пример левого внешнего соединения, построенного на основе таблиц, содержащих список преподавателей института и расписание занятий, которые были описаны выше.
Дата добавления: 2014-12-01; просмотров: 841;