Pozbycie sie podzapytania
Kriss - 09-12-2005 19:54
Pozbycie sie podzapytania
Witam
Mam taka tabele (uproszczona dla celow pytania) zawierajaca dane na temat wypozyczonych ksiazek:
-- WYPOZYCZENIA CZYTELNIK_ID (int) KSIAZKA_ID (int) ZWROCONA (varchar)
Kolumna ZWROCONA zawiera napis 'tak' lub 'nie' w zaleznosci od tego, czy czytelnik zwrocil ksiazke.
Zapytanie zwracajace ID wszystkich czytelnikow, ktorzy maja wypozyczone ksiazki jest proste i moze wygladac tak:
select distinct CZYTELNIK_ID from WYPOZYCZENIA where ZWROCONA = 'nie'
Interesuje mnie natomiast, jak wydobyc ID czytelnikow, ktorzy nie maja ani jednej wypozyczonej ksiazki. Moze to wygladac tak:
select CZYTELNIK_ID from WYPOZYCZENIA where CZYTELNIK_ID not in (select distinct CZYTELNIK_ID from WYPOZYCZENIA where ZWROCONA = 'nie')
ale czy mozliwe byloby wydobycie tego bez uzycia podzapytania?
Pozdrawiam, Kriss
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
somee - 09-12-2005 19:54
Kriss wrote: > Witam > > Mam taka tabele (uproszczona dla celow pytania) zawierajaca dane na temat > wypozyczonych ksiazek: > > -- WYPOZYCZENIA > CZYTELNIK_ID (int) KSIAZKA_ID (int) ZWROCONA (varchar) > > Kolumna ZWROCONA zawiera napis 'tak' lub 'nie' w zaleznosci od tego, czy > czytelnik zwrocil ksiazke. > > Zapytanie zwracajace ID wszystkich czytelnikow, ktorzy maja wypozyczone ksiazki > jest proste i moze wygladac tak: > > select distinct CZYTELNIK_ID from WYPOZYCZENIA where ZWROCONA = 'nie' > > Interesuje mnie natomiast, jak wydobyc ID czytelnikow, ktorzy nie maja ani > jednej wypozyczonej ksiazki. Moze to wygladac tak: > > select CZYTELNIK_ID from WYPOZYCZENIA where CZYTELNIK_ID not in > (select distinct CZYTELNIK_ID from WYPOZYCZENIA where ZWROCONA = 'nie') > > ale czy mozliwe byloby wydobycie tego bez uzycia podzapytania? > > Pozdrawiam, Kriss >
Jak masz książkę do SQL'a a powinieneś mieć to poczytaj np: o Left Join outer left join itp
Pozdrawiam GP
Noel - 09-12-2005 19:54
Użytkownik somee napisał:
> Kriss wrote: > >> Witam >> >> Mam taka tabele (uproszczona dla celow pytania) zawierajaca dane na >> temat wypozyczonych ksiazek: >> >> -- WYPOZYCZENIA >> CZYTELNIK_ID (int) KSIAZKA_ID (int) ZWROCONA (varchar) >> >> Kolumna ZWROCONA zawiera napis 'tak' lub 'nie' w zaleznosci od tego, >> czy czytelnik zwrocil ksiazke. >> >> Zapytanie zwracajace ID wszystkich czytelnikow, ktorzy maja >> wypozyczone ksiazki jest proste i moze wygladac tak: >> >> select distinct CZYTELNIK_ID from WYPOZYCZENIA where ZWROCONA = 'nie' >> >> Interesuje mnie natomiast, jak wydobyc ID czytelnikow, ktorzy nie maja >> ani jednej wypozyczonej ksiazki. Moze to wygladac tak: >> >> select CZYTELNIK_ID from WYPOZYCZENIA where CZYTELNIK_ID not in >> (select distinct CZYTELNIK_ID from WYPOZYCZENIA where ZWROCONA = 'nie') >> >> ale czy mozliwe byloby wydobycie tego bez uzycia podzapytania? >>
select czytelnik_id from wypozyczenia minus select czytelnik_id from wypozyczenia where zwrocona='nie';
-- Tomek "Noel" B.
Killer - 09-12-2005 19:54
Noel napisał(a):
> select czytelnik_id from wypozyczenia > minus > select czytelnik_id from wypozyczenia where zwrocona='nie';
Mialem taki problem - jakie sa odpowiedniki w sql 2000 server takich oraclowych funkcji jak "minus", "intersect"? Jedynie "union" dziala
-- Killer
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
=?ISO-8859-2?Q?wynik_podzapytania_jako_pojedy=F1cza_warto=B6= E6?=
podzapytanie z wyrazeniem IN a przekazanie tego UDFowi, pomoc w zapytaniu
wynik podzapytania jako zmienna - postgresql
=?ISO-8859-2?Q?[MSSQL]_U=BFycie_podzapytania?=
[sql] podzapytanie w klauzuli 'from' - teoria.
Inna składnia złączeń z podzapytaniem
wydajnosc, podzapytania czy zapytania?
Wyciągnięcie z podzapytania do zapytania
[MySQL] podzapytanie w petli
zanotowane.pldoc.pisz.plpdf.pisz.plwawa19wwa91.pev.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|