Запити SQL; через кілька таблиць
Зв’язування таблиць - приєднуйтесь
Реляційні бази даних зазвичай складаються з великої кількості таблиць. Для запиту SQL вам часто потрібні дані, що надходять з різних таблиць. Для цього таблиці повинні бути пов’язані між собою. Такі посилання називаються Приєднується.

Зв'язування таблиць здійснюється за допомогою вказівки таблиць, задіяних у реченні FROM. Атрибути, що походять з різних таблиць, часто мають однакові назви. Якщо такий атрибут використовується у запиті SQL, також має бути вказано ім'я таблиці. Один пише: ім'я таблиці. Ім'я атрибута.
| Назва атрибута Name неоднозначна. Він описує імена вчителів, з одного боку, і клас, з іншого. У нашому прикладі до імені класу потрібно звертатись з Class.Name, а до імені викладача - Teacher.Name. |
| коментар | Якщо назва стовпця унікальна, немає необхідності ставити назву таблиці попереду. |
Наступний запит показує принцип. Значення речення WHERE пояснюється більш докладно нижче.
Назви таблиць можна перейменовувати в реченні FROM. Для цього SQL надає ключове слово ЯК доступні, але не обов’язково використовуються. Наприклад, можливо наступне формулювання вищезазначеного запиту:
| ВИБЕРІТЬ l.name, k.name ВІД Вчитель ЯК л, клас ЯК k ДЕ l.PersNr = k.клас управління; |
| ВИБЕРІТЬ l.name, k.name ВІД Вчитель l, клас k ДЕ l.PersNr = k.клас управління; |
Оскільки PersNr та управління класами - це унікальні імена атрибутів, речення WHERE також може бути:
| ДЕ PersNr = керівник класу |
Назви таблиць можна перейменовувати в реченні FROM. Для цього SQL надає ключове слово ЯК доступні, але не обов’язково використовуються. Наприклад, можливо наступне формулювання вищезазначеного запиту:
| ВИБЕРІТЬ п. Ім'я кімнати № ВІД професор ЯК р, кімната чергування ЯК d ДЕ p.PersNr = d.PersNr; |
| ВИБЕРІТЬ п. Ім'я, тобто номер кімнати ВІД професор р, кабінет д ДЕ p.PersNr = d.PersNr; |
Оскільки name та RaumNr - це унікальні імена атрибутів, речення SELECT також може бути:
| ВИБРАТИ назву, номер кімнати |
Значення речення WHERE
Опускання речення WHERE у наведеному вище прикладі призводить до такого результату:
Розвиток цього результату можна уявити наступним чином. При об’єднанні кожен запис в одній таблиці пов’язується з кожним записом в іншій таблиці. Результат "зберігається" у віртуальній таблиці, яка містить як стовпці однієї, так і іншої таблиці.
За допомогою речення WHERE можуть бути вказані умови рівності, які виключають безглузді або безглузді комбінації.
Самостійне приєднання
Іноді таблиця пов'язана сама з собою. Це конкретне приєднання називається Самостійне приєднання.
| ВИБЕРІТЬ Назва, тема ВІД Викладач, має_викладацьку кваліфікацію ДЕ PersNr = вчитель; |
| База даних вправ |
| ВИБЕРІТЬ Прізвище ВІД Вчитель, має нагляд спеціаліста ДЕ PersNr = вчитель І Тема = 'німецька'; |
| База даних вправ |
| ВИБЕРІТЬ л. ім'я ВІД Викладач l, студент, is_Fachlehrkraft_von i ДЕ в класі = s.gehoert_zu І i.вчитель = № 1 І s.Name = 'Falbala'; |
| База даних вправ |
| ВИБЕРІТЬ учитель ВІД ist_fachlehrkraft_von a, ist_fachlehrkraft_von b ДЕ а.вчитель = б.вчитель І a.class = b.class І НЕ (a.Fach = b.Fach); |
| База даних вправ |
Це самоз’єднання, оскільки таблиця is_teacher_of приєднана до себе.
Сховати