Просте еквісоедіненія - студопедія

Видати всі комбінації інформації про таких постачальників і деталях, які розміщені в одному і тому ж місті (інакше кажучи, «соразмещени» - потворний, але зручний термін):

WHERE S.ГОРОД = Р.ГОРОД;

Зауважимо, що тут посилання на поля у фразі WHERE повинні уточнюватися іменами містять їх таблиць. В результаті отримаємо наступну нижче таблицю 1. (Щоб уникнути двозначності в цій таблиці два стовпці МІСТО показані явно як S.ГОРОД і Р.ГОРОД.)

S1 S1 S1 S2 S2 S3 S3 S4 S4 S4

Сміт Сміт Сміт Джонс Джонс Блейк Блейк Кларк Кларк Кларк

Лондон Лондон Лондон Париж Париж Париж Париж Лондон Лондон Лондон

оскільки вони задовольняють предикату у фразі WHERE (S.ГОРОД = Р.ГОРОД). Це має місце і для всіх інших пар рядків, що містять відповідні значення МІСТО. Зверніть увагу на те, що постачальник S5, що розміщується в Атенс, не потрапляє в результуючу таблицю, так як немає будь-яких деталей, що зберігаються в цьому місті. Подібним же чином результат не містить деталі РЗ, що зберігається в Римі, з огляду на те, що немає постачальників, розміщених в Римі.

Результат даного запиту називається з'єднанням таблиць S і Р по відповідності значень МІСТО. Термін «з'єднання» використовується також для позначення операції конструювання такого результату. Умова S.ГОРОД = Р.ГОРОД називається умовою сполуки або предикатом з'єднання. У зв'язку з наведеним прикладом потрібно відзначити ряд моментів. Одні з них мають важливе значення, інші не настільки істотні.

- Обидва поля в предикате з'єднання повинні бути або числовими, або рядками літер. Не обов'язково, щоб їх типи даних були ідентичні. Однак, з міркувань продуктивності, це було б, взагалі кажучи, непогано.

- Необов'язково, щоб поля в предикате з'єднання мали однакові імена, хоча дуже часто це буде саме так.

- Немає необхідності в тому, щоб оператор порівняння в предикате з'єднання обов'язково був рівністю, хоча це буде дуже часто. Надалі будуть наведені приклади такого роду (приклад 4.3.2 і остання частина прикладу 4.3.6). У разі оператора рівності з'єднання називають іноді еквісоедіненія.

- Фраза WHERE в SELECT-з'єднанні може включати, крім самого предиката з'єднання, інші умови. Ця можливість ілюструється нижче в прикладі 4.3.3.

- Можна, звичайно, передбачити в SELECT вибірку тільки специфіковані полів з'єднання, а не їх усіх. Ця можливість ілюструється нижче в прикладах 4.3.4-4.3.6.

може бути ще більш спрощено:

З іншого боку, воно може бути записано і в розширеному вигляді:

SELECT НОМЕР_ПОСТАВЩІКА, ПРІЗВИЩЕ, СТАН, S.город

НОМЕР_ДЕТАЛІ, НАЗВА, КОЛІР, ВЕС, Р. МІСТО

У такому формулюванні для S.ГОРОД і Р.ГОРОД у фразі SELECT слід вказувати їх уточнення імена, як показано в прикладі, оскільки неуточнений ім'я МІСТО було б двозначним. Якщо Вам потрібно освіжити в пам'яті питання, що стосуються уточнених імен полів, см. Введення до розділу 4.2.

- За визначенням, еквісоедіненія має продукувати результат, який містить два ідентичних стовпчика. Якщо виключити один з цих стовпців, то залишився називається природним з'єднанням. Для того, щоб побудувати природне з'єднання таблиць S і Р по містах в SQL, слід було б записати:

SELECT НОМЕР_ПОСТАВЩІКА, ПРІЗВИЩЕ, СТАН, S.ГОРОД,

НОМЕР_ДЕТАЛІ, НАЗВА, КОЛІР, ВЕС

WHERE S.ГОРОД = Р.ГОРОД;

Природне з'єднання є, ймовірно, однією з найбільш корисних форм з'єднання - в такій мірі, що ми часто використовуємо неуточнений термін «з'єднання» спеціально для позначення цього випадку.

- Можна утворювати сполуки також і трьох, чотирьох. або будь-якого числа таблиць. У прикладі 4.3.5, наведеному нижче, показано з'єднання трьох таблиць.

Схожі статті