SQL dotazy; cez niekoľko tabuliek
Prepojenie tabuliek - pripojte sa
Relačné databázy zvyčajne pozostávajú z veľkého počtu tabuliek. Pre dotaz SQL často potrebujete údaje pochádzajúce z rôznych tabuliek. Za týmto účelom musia byť tabuľky prepojené. Takéto odkazy sa nazývajú Pripája sa.

Tabuľky sú prepojené zadaním tabuliek zahrnutých v klauzule FROM. Atribúty pochádzajúce z rôznych tabuliek majú často rovnaké názvy. Ak sa takýto atribút používa v dotaze SQL, musí sa uviesť aj názov tabuľky. Jeden píše: názov tabuľky. Názov atribútu.
| Názov atribútu Name je nejednoznačný. Opisuje mená učiteľov na jednej strane a triedu na druhej strane. V našom príklade musí byť názov triedy adresovaný pomocou Class.Name a meno učiteľa pomocou Teacher.Name. |
| komentovať | Ak je názov stĺpca jedinečný, nie je potrebné uvádzať názov tabuľky pred. |
Nasledujúci dopyt ukazuje princíp. Význam klauzuly WHERE je vysvetlený podrobnejšie nižšie.
Názvy tabuliek je možné premenovať v rámci klauzuly FROM. Na tento účel poskytuje SQL kľúčové slovo AS dostupné, ale nie nevyhnutne použité. Je napríklad možná nasledujúca formulácia vyššie uvedenej požiadavky:
| VYBERTE l.name, k.name ZO Učiteľ AS l, trieda AS k KDE l.PersNr = správa k.triedy; |
| VYBERTE l.name, k.name ZO Učiteľ l, trieda k KDE l.PersNr = správa k.triedy; |
Pretože PersNr a správa triedy sú jedinečné názvy atribútov, klauzula WHERE môže byť tiež:
| KDE PersNr = vodca triedy |
Názvy tabuliek je možné premenovať v rámci klauzuly FROM. Na tento účel poskytuje SQL kľúčové slovo AS nie sú nevyhnutne použité. Je napríklad možná nasledujúca formulácia vyššie uvedenej požiadavky:
| VYBERTE p. Názov, miestnosti č ZO profesor AS p, pracovňa AS d KDE p.PersNr = d.PersNr; |
| VYBERTE p.Meno, teda miestnosť č ZO profesor p, kancelária d KDE p.PersNr = d.PersNr; |
Pretože name a RaumNr sú jedinečné názvy atribútov, klauzula SELECT môže byť tiež:
| VYBERTE meno, miestnosť č |
Význam klauzule WHERE
Vynechanie klauzuly WHERE vo vyššie uvedenom príklade vedie k nasledujúcemu výsledku:
Vytvorenie tohto výsledku si možno predstaviť nasledovne. Vďaka spojeniu je každý záznam v jednej tabuľke prepojený s každým záznamom v druhej tabuľke. Výsledok sa „uloží“ do virtuálnej tabuľky, ktorá obsahuje stĺpce jednej aj druhej tabuľky.
Pomocou klauzuly WHERE možno určiť podmienky rovnosti, ktoré vylučujú nezmyselné alebo nezmyselné kombinácie.
Pripojte sa k sebe
Niekedy je tabuľka spojená sama so sebou. Toto konkrétne spojenie sa volá Pripojte sa k sebe.
| VYBERTE Meno, predmet ZO Učiteľ, má_učiteľskú kvalifikáciu KDE PersNr = učiteľ; |
| Databáza cvičení |
| VYBERTE Priezvisko ZO Učiteľ, má odborný dozor KDE PersNr = učiteľ A Predmet = 'Nemec'; |
| Databáza cvičení |
| VYBERTE l.názov ZO Učiteľ l, študent s, je_Fachlehrkraft_von i KDE v triede = s.gehoert_zu A i.učiteľ = 1. osoba č A s.Name = 'Falbala'; |
| Databáza cvičení |
| VYBERTE učiteľ ZO ist_fachlehrkraft_von a, ist_fachlehrkraft_von b KDE a.učiteľ = b.učiteľ A a.trieda = b.trieda A NIE (a.Fach = b.Fach); |
| Databáza cvičení |
Toto je vlastné pripojenie, pretože tabuľka is_teacher_of je spojená sama so sebou.
Skryť