МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


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


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


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


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

Условное соединение ( JOIN ... ON)





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

Допустим, в базе данных имеются следующие две таблицы:

· Продажи (ID_товара, Количество, ID_клиента);

· Клиенты (ID_клиента, Имя, Телефон).

Тогда эти таблицы можно соединить, используя, например, следующий запрос:

SELECT * FROM Продажи JOIN клиенты

ON (Продажи.ID_клиента = Клиенты.ID_клиента)
AND (Продажи. количество > 50);

Примечание

В Microsoft Access используется оператор INNER JOIN…ON.
В полнофункциональных базах данных также допустимо ключевое слово INNER.

Соединение по именам столбцов (JOIN... USING)

Соединение по именам столбцов похоже на естественное соединение.
Отличие состоит в том, что можно указать, какие одноименные столбцы должны проверяться. Напомню, что в естественном соединении проверяются все одноименные столбцы.

Допустим, имеются две таблицы с одинаковыми структурами:

· Болты (Тип, Количество, Материал);

· Гайки (Тип,количество, Материал).

Предположим, что мы готовим крепежные комплекты, в каждом из которых количества однотипных болтов и гаек должны совпадать, а их материалы могут быть различными. Требуется узнать, какие комплекты уже готовы и сколько элементов они содержат. Для этого следует определенным образом соединить таблицы Болты и гайки. Естественное соединение в этом случае не подойдет, поскольку при нем проверяются все одноименные столбцы, а потому в результатную таблицу не попадут комплекты болтов и гаек из различных материалов. Например, если все болты стальные, а гайки латунные, то в результате естественного соединения будет получена пустая таблица. Поэтому следует использовать соединение по именам столбцов, при котором столбец материал исключен. Эго соединение можно быть представлено так:

SELECT * FROM Болты JOIN Гайки
USING (Тип, Количество);

После ключевого слова USING (используя) в круглых скобках указывается список одноименных столбцов соединяемых таблиц, которые необходимо проверять.

На рис. ниже показаны таблицы Болты и гайки, а также результат рассмотренного запроса.

Очевидно, данный запрос можно сформулировать иначе:

SELECT * FROM Болты, Гайки

WHERE (Болты.Тип = Гайки.Тип)
AND (Болты.Количество = Гайки.Количество);

Рис. Таблицы Болты и Гайки и результат их соединения по столбцам тип и количество

 

Примечание

В Microsoft Access оператор JOIN ...USINO не поддерживается. Вместо него можно использовать INNER JOIN ... ON. Рассмотренный запрос в Access можно сформулировать так:

SELECT *

FROM Болты INNER JOIN Гайки

ON (Болты.Тип = Гайки.Тип)
AND (Болты.Количество = Гайки.Количество);

Внешние соединения

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



С помощью специальных ключевых слов LEFT OUTER, RIGHT OUTER, FULL и UNION, написанных перед JOIN, можно выполнить соответственно левое, правое, полное соединение и объединение- соединение.
В SQL-выражении запроса таблица, указанная слева от оператора JOIN называется левой, а указанная справа от него— правой.





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.