Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
Cvičení 04 SQL Exists, Any, All Ing. Pavel Bednář pavel.bednar@vsb.cz http://pavelbednar.aspone.cz
2
Podmínka EXIST je považována za splněnou v případě, že poddotaz vrací alespoň jeden záznam. (je jedno jaký) Typickým použítím může být například konstukce vrať mi záznamy z tabulky 1, které mají/nemají nějaký záznam v tabulce 2
3
Vrať studenty, kteří neměli letos (v roce 2013) žádné vyznamenání. Select * from Student s WHERE NOT EXISTS (SELECT * from Vyznameni v WHERE v.login = s.login and rok=2013) Student LoginPříjmeníJménoVěkId_Fakulta Dra025DrábekTomáš251 Zub011ZubatáEva232 Nov098NovákBohumil281 Sip001ŠípkováRůžena182 Vid021VidlákováKateřina283 Vyznamenani LoginRok Zub0112011 Sip0012013 Vid0212013 LoginPříjmeníJménoVěkId_Fakulta Dra025DrábekTomáš251 Zub011ZubatáEva232 Nov098NovákBohumil283
4
Vypište všechny předměty, pro něž existuje nějaký další předmět vyučovaný ve stejném ročníku. SELECT * FROM Predmet P1 WHERE exists (SELECT * FROM Predmet P2 WHERE P1.rocnik = P2.rocnik and P1.pID <> P2.pID) Predmet Id_pZkratkaNázevRočník 1LOLogické obvody2012/2013 2VIAVývoj internetových aplikací2011/2012 3VIAVývoj internetových aplikací2012/2013 4TSTelekomunikační sítě2010/2011 5LOLogické obvody2013/2014 Id_pZkratkaNázevRočník 1LOLogické obvody2012/2013 3VIAVývoj internetových aplikací2012/2013
5
Umožnuje specifikovat více hodnot v klauzole where. Poddotaz vrací množinu možných hodnot, které atribut může nabývat.
6
Vypiš příjmení a jméno studentů, kteří měli někdy vyznamenání. SELECT prijmeni, jmeno FROM Student WHERE login IN (SELECT login from Vyznamenani) Student LoginPříjmeníJménoVěkId_Fakulta Dra025DrábekTomáš251 Zub011ZubatáEva232 Nov098NovákBohumil281 Sip001ŠípkováRůžena182 Vid021VidlákováKateřina283 Vyznamenani LoginRok Zub0112011 Sip0012012 Vid0212012 PříjmeníJméno ZubatáEva ŠípkováRůžena VidlákováKateřina
7
Podmínka ALL je považována za splněnou v případě, že VŠECHNY záznamy v poddotaze splňují podmínku vnitřního dotazu. Podmínka ANY je považována za splněnou v případě, že ALESPOŇ JEDEN záznam splňuje podmínku vnitřního dotazu. Obecně platí, že většina dotazů využívající exists a not exists se dají přepsat s pomocí any a all
8
Vypište nejstaršího studenta. SELECT Prijmeni, jmeno FROM Student S1 WHERE S1.rok_narozeni >= all(SELECT S2.rok_narozeni FROM Student S2 WHERE S2.rok_narozeni is not null) Student LoginPříjmeníJménoVěkId_Fakulta Dra025DrábekTomáš251 Zub011ZubatáEva232 Nov098NovákBohumil281 Sip001ŠípkováRůžena182 Vid021VidlákováKateřina283 PříjmeníJméno NovákBohumil VidlákováKateřina
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.