Autor, Název akce Databázové systémy a SQL Lekce 4 Daniel Klimeš 1 Autor, Název akce Práce s více tabulkami Daniel Klimeš, Databázové systémy a SQL 2 ID pacienta Jmeno Prijmeni 1 Jan Novák 2 Jana Nová 3 Karel Starý ID pacienta Datum vysetreni Vysledek vysetreni 1 12.1.2011 39,5 1 15.3.2011 36,8 2 2.2.2011 37,5 ID lekare Jmeno Prijmeni 10 Petr Šikovný 20 Jana Levá 30 Karel Starý Spojení sloupců = JOIN + + Spojení řádků – množinové operace Autor, Název akce SELECT – více tabulek Daniel Klimeš, Databázové systémy a SQL 3 ID pacienta Jmeno Prijmeni 1 Jan Novák 2 Jana Nová 3 Karel Starý ID pacienta Datum vysetreni Vysledek vysetreni 1 12.1.2011 39,5 1 15.3.2011 36,8 2 2.2.2011 37,5 Spojování tabulek = join Druhy spojení: • vnitřní – inner join – jen spojitelné řádky • vnější – outer join - left join, right join, full join všechny řádky jedné tabulky + napojitelné řádky druhé tabulky Autor, Název akce JOIN - syntaxe Daniel Klimeš, Databázové systémy a SQL 4 Vnitřní spojení SELECT * FROM pacient JOIN vysetreni ON pacient.id_pacienta = vysetreni.id_pacienta ID pacienta Jmeno Prijmeni ID_pacienta Datum vysetreni Vysledek vysetreni 1 Jan Novák 1 12.1.2011 39,5 1 Jan Novák 1 15.3.2011 36,8 2 Jana Nová 2 2.2.2011 37,5 Autor, Název akce OUTER JOIN – syntaxe Daniel Klimeš, Databázové systémy a SQL 5 Vnější spojení SELECT * FROM tabulka1 LEFT JOIN tabulka2 ON tabulka1.sloupec = tabulka2.sloupec SELECT * FROM pacient LEFT JOIN vysetreni ON pacient.id_pacienta = vysetreni.id_pacienta ID pacienta Jmeno Prijmeni ID_pacienta Datum vysetreni Vysledek vysetreni 1 Jan Novák 1 12.1.2011 39,5 1 Jan Novák 1 15.3.2011 36,8 2 Jana Nová 2 2.2.2011 37,5 3 Karel Starý ORACLE varianta SELECT * FROM tabulka1, tabulka2 WHERE tabulka1.sloupec = tabulka2.sloupec(+) SELECT * FROM pacient, vysetreni WHERE pacient.id_pacienta = vysetreni.id_pacienta(+) Autor, Název akce Cvičení Daniel Klimeš, Databázové systémy a SQL 6 Vypište studenty zapsané do alespoň jednoho předmětu Vypište všechny studenty s vybraným předmětem/předměty Vypište všechny předměty a k nim počet zapsaných studentů Vypište učící učitele a jeho předměty Vypište své jméno a své předměty Vypište učící učitele a jeho studenty Vypište všechny učitele a počet jeho studentů Autor, Název akce TRIALDB – datový model Daniel Klimeš, Databázové systémy a SQL 7 Vazba pacienti – studie m-n => „mezitabulka“ PATIENT_STUDY Vazba studie – pracoviště m-n => „mezitabulka“ STUDIES_SITES Autor, Název akce Import dat z textových souborů Daniel Klimeš, Databázové systémy a SQL 8 Skript4.sql – vytvoření tabulek a klíčů COPY patients FROM 'Z:/DBM/patients.txt' NULL '' ENCODING 'UTF8'; Cílová tabulka Zdrojový soubor Podoba NULL Kódování češtiny Autor, Název akce Cvičení 2 Daniel Klimeš, Databázové systémy a SQL 9 Zjistěte počet pacientů v jednotlivých studiích STUDY_NAME, počet pacientů Zjistěte počet pacientů dle pohlaví v jednotlivých studiích STUDY_NAME, pohlaví, počet pacientů Zjistěte počet zapojených pracovišť do jednotlivých studií STUDY_NAME, počet pracovišť Vypište pracoviště zapojená do více studií SITE, počet studií Vypište všechny studie a počet zařazených pacientů v jednotlivých letech STUDY_NAME, rok(DATE_OF_ENROLLMENT), počet pacientů