Slovník | Vyhledávání | Mapa webu
 
Základy informatiky pro biologyDatabázové systémy v biomedicíně Pokročilé SQL Práce s více tabulkami Tři a více tabulek

Logo Matematická biologie

Tři a více tabulek

Pokud potřebujeme získat data z více jak dvou tabulek, syntaxe zůstává stejná, pomocí výrazu JOIN připojíme další tabulku. Mějme tabulku RTG vyšetření, na kterých může být zjištěna u daného pacienta 0 až n zlomenin. Tabulka zlomenin je vázána s tabulkou rtg pomocí klíče vysetreni_id.

CREATE TABLE rtg

(

vysetreni_id NUMERIC(9),

patient_id VARCHAR(10),

)

CREATE TABLE zlomeniny

(

zlomenina_id NUMERIC(9),

vysetreni_id NUMERIC(9),

lokalizace VARCHAR(50)

)

Naplníme tabulky daty, pacient pat1 měl 2 vyšetření, jedno negativní, druhé ukázalo 2 zlomené kosti. Pacient pat2 měl jedno vyšetření bez nálezu.

INSERT INTO rtg (patient_id, vysetreni_id) VALUES ('pat1', 1);

INSERT INTO rtg (patient_id, vysetreni_id) VALUES ('pat1', 2);

INSERT INTO rtg (patient_id, vysetreni_id) VALUES ('pat2', 3);

INSERT INTO zlomeniny (zlomenina_id, vysetreni_id, lokalizace) VALUES (1, 2, 'femur');

INSERT INTO zlomeniny (zlomenina_id, vysetreni_id, lokalizace) VALUES (2, 2, 'ulna');

Vnitrřní spojení bychom provedli takto:

SELECT * FROM patients p LEFT JOIN rtg ON p.patient_id = rtg.patient_id LEFT JOIN zlomeniny z ON rtg.vysetreni_id = z.vysetreni_id

Výsledkem jsou pouhé 2 řádky, které obsahují popis dvou zlomeni pacienta pat1.

Pokud chceme získat přehled o všech pacientech, jejich RTG vyšetřeních a případně zjištěných zlomeninách musíme obě spojení definovat jako vnější:

SELECT * FROM patients p LEFT JOIN rtg ON p.patient_id = rtg.patient_id LEFT JOIN zlomeniny z ON rtg.vysetreni_id = z.vysetreni_id

V tomto případě je výsledkem 8 řádků, popis zlomenin je ovšem jen u dvou z nich, v ostatních řádcích ve sloupci popis je hodnota NULL.

Vnitřní spojení více tabulek můžeme provést i bez klauzule JOIN:

SELECT * FROM patients p, rtg, zlomeniny z WHERE p.patient_id = rtg.patient_id AND rtg.vysetreni_id = z.vysetreni_id

Obdobně postupujeme i při spojování většího množství tabulek. Maximálně možný počet spojovaných tabulek závisí na databázovém systému.

 
vytvořil Institut biostatistiky a analýz Lékařské fakulty Masarykovy univerzity