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.

cvičení VYBERTE

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ť