Kidolgozott SQL feladatok

A feladatok megoldása során egy egyszerû kölcsönzési adatbázist használunk, amely a következõ táblákból áll: A táblákban a kulcsmezõket aláhúztuk, a táblák kapcsolatait pedig az alábbi relációkkal írhatjuk le: A feladatok a Microsoft Access SQL implementációjának szintaktikáját követik. A feladatok tartalom szerint csoportosítva:

KÉSEDELMI DÍJAK KIÍRATÁSA



Írassa ki a könyvtárba befizetett késedelmi díjakat!

SELECT KDIJ
FROM KOLCS;



Írassa ki a könyvtárba befizetett nullánál nagyobb értékû késedelmi díjakat!

SELECT KDIJ
FROM KOLCS
WHERE KDIJ>0;



Írassa ki a könyvtárba 2003-ban befizetett késedelmi díjakat! (Feltéve, hogy a késedelmi díjakat a könyvek visszahozatalakor fizették be.)

SELECT KDIJ
FROM KOLCS
WHERE YEAR(VDAT)=2003;



Írassa ki a könyvtárba 2003 októberében befizetett késedelmi díjakat! (Feltéve, hogy a késedelmi díjakat a könyvek visszahozatalakor fizették be.)

SELECT KDIJ
FROM KOLCS
WHERE YEAR(VDAT)=2003 AND
    MONTH(VDAT)=10;



Írassa ki a könyvtárba 2003 október 1 és 15 között befizetett késedelmi díjakat! (Feltéve, hogy a késedelmi díjakat a könyvek visszahozatalakor fizették be.)

SELECT KDIJ
FROM KOLCS
WHERE YEAR(VDAT)=2003 AND
    MONTH(VDAT)=10 AND
    DAY(VDAT) BETWEEN 1 AND 15;

vagy

SELECT KDIJ
FROM KOLCS
WHERE YEAR(VDAT)=2003 AND
    MONTH(VDAT)=10 AND
    (1<=DAY(VDAT) AND DAY(VDAT)<=15);



Írassa ki a könyvtárba 2003 második negyedévében befizetett késedelmi díjakat! (Feltéve, hogy a késedelmi díjakat a könyvek visszahozatalakor fizették be.)

SELECT KDIJ
FROM KOLCS
WHERE YEAR(VDAT)=2003 AND
    MONTH(VDAT) IN (4,5,6);



Írassa ki a könyvtárba 2003 március és április hónapjában befizetett késedelmi díjakat! (Feltéve, hogy a késedelmi díjakat a könyvek visszahozatalakor fizették be.)

SELECT KDIJ
FROM KOLCS
WHERE YEAR(VDAT)=2003 AND
    MONTH(VDAT) IN (3,4);

vagy

SELECT KDIJ
FROM KOLCS
WHERE YEAR(VDAT)=2003 AND
    (MONTH(VDAT)=3 OR MONTH(VDAT)=4);



Írassa ki a könyvtárba az elmúlt két hétben (=14 napban) befizetett késedelmi díjakat! (Feltéve, hogy a késedelmi díjakat a könyvek visszahozatalakor fizették be.)

SELECT KDIJ
FROM KOLCS
WHERE VDAT>=DATE()-14;



Írassa ki a könyvtárba a 2003 június 29-én befizetett késedelmi díjakat! (Feltéve, hogy a késedelmi díjakat a könyvek visszahozatalakor fizették be.)

SELECT KDIJ
FROM KOLCS
WHERE VDAT=DATESERIAL(2003,6,29);

vagy

SELECT KDIJ
FROM KOLCS
WHERE VDAT=#6/29/2003#;

(Az utóbbi lekérdezés függ a számítógépen beállított dátumformátumtól.)



Írassa ki a könyvtárba befizetett késedelmi díjakat nagyság szerint rendezve!

SELECT KDIJ
FROM KOLCS
ORDER BY KDIJ;



Írassa ki a könyvtárba befizetett késedelmi díjakat nagyság szerint fordított sorrendben rendezve!

SELECT KDIJ
FROM KOLCS
ORDER BY KDIJ DESC;



Írassa ki a könyvtárba 2003-ban befizetett késedelmi díjak értékeit nagyság szerint fordított sorrendben rendezve! (Feltéve, hogy a késedelmi díjakat a könyvek visszahozatalakor fizették be.)

SELECT KDIJ
FROM KOLCS
WHERE YEAR(VDAT)=2003
ORDER BY KDIJ DESC;



Írassa ki a könyvtárba 2003-ban befizetett késedelmi díjak értékeit nagyság szerint fordított sorrendben rendezve! (Feltéve, hogy a késedelmi díjakat a könyvek visszahozatalakor fizették be; egy értéket csak egyszer írasson ki!)

SELECT DISTINCT KDIJ
FROM KOLCS
WHERE YEAR(VDAT)=2003
ORDER BY KDIJ DESC;



Írassa ki a könyvtárba befizetett 10 legnagyobb értékû késedelmi díjat!

SELECT TOP 10 KDIJ
FROM KOLCS
ORDER BY KDIJ DESC;



Írassa ki a könyvtárba 2003-ban befizetett 10 legnagyobb értékû késedelmi díjat! (Feltéve, hogy a késedelmi díjakat a könyvek visszahozatalakor fizették be; egy értéket csak egyszer írasson ki!)

SELECT DISTINCT TOP 10 KDIJ
FROM KOLCS
WHERE YEAR(VDAT)=2003
ORDER BY KDIJ DESC;



Írassa ki a könyvtárba 2003 októberében befizetett 10 legnagyobb értékû késedelmi díjat! (Feltéve, hogy a késedelmi díjakat a könyvek visszahozatalakor fizették be.)

SELECT TOP 10 KDIJ
FROM KOLCS
WHERE YEAR(VDAT)=2003 AND
    MONTH(VDAT)=10
ORDER BY KDIJ DESC;



Írassa ki a könyvtárba befizetett késedelmi díjak teljes összegét!

SELECT SUM(KDIJ)
FROM KOLCS;



Írassa ki a könyvtárba befizetett késedelmi díjak teljes összegét "Késedelmi díjak" néven!

SELECT SUM(KDIJ) AS "Késedelmi díjak"
FROM KOLCS;

vagy

SELECT SUM(KDIJ) AS [Késedelmi díjak]
FROM KOLCS;

(Utóbbi esetben a mezõnévben nem jelenik meg az idézõjel.)



Írassa ki a könyvtárba 2003-ban befizetett késedelmi díjak teljes összegét „Késedelmi díjak” néven! (Feltéve, hogy a késedelmi díjakat a könyvek visszahozatalakor fizették be.)

SELECT SUM(KDIJ) AS "Késedelmi díjak"
FROM KOLCS
WHERE YEAR(VDAT)=2003;



Írassa ki a könyvtárba 2003 szeptemberében befizetett késedelmi díjak teljes összegét „Késedelmi díjak” néven! (Feltéve, hogy a késedelmi díjakat a könyvek visszahozatalakor fizették be.)

SELECT SUM(KDIJ) AS "Késedelmi díjak"
FROM KOLCS
WHERE YEAR(VDAT)=2003 AND
    MONTH(VDAT)=9;



Írassa ki a könyvtárba 2003 szeptember 1 és 15 között befizetett késedelmi díjak teljes összegét „Késedelmi díjak” néven! (Feltéve, hogy a késedelmi díjakat a könyvek visszahozatalakor fizették be.)

SELECT SUM(KDIJ) AS "Késedelmi díjak"
FROM KOLCS
WHERE YEAR(VDAT)=2003 AND
    MONTH(VDAT)=9 AND
    DAY(VDAT) BETWEEN 15 AND 30;

vagy

SELECT SUM(KDIJ) AS "Késedelmi díjak"
FROM KOLCS
WHERE YEAR(VDAT)=2003 AND
    MONTH(VDAT)=9 AND
    (15<=DAY(VDAT) AND DAY(VDAT)<=30);



Írassa ki az egyes olvasók által befizetett késedelmi díjak összegét „Késedelmi díj” néven!

SELECT SUM(KDIJ) AS "Késedelmi díj"
FROM KOLCS
GROUP BY OLVJ;



Írassa ki az olvasók olvasójegy-számát és az egyes olvasók által befizetett késedelmi díjak összegét „Késedelmi díj” néven!

SELECT OLVJ, SUM(KDIJ) AS "Késedelmi díj"
FROM KOLCS
GROUP BY OLVJ;



Írassa ki az olvasók olvasójegy-számát és az egyes olvasók által 2003-ban befizetett késedelmi díjak összegét „Késedelmi díj” néven! (Feltéve, hogy a késedelmi díjakat a könyvek visszahozatalakor fizették be.)

SELECT OLVJ, SUM(KDIJ) AS "Késedelmi díj"
FROM KOLCS
WHERE YEAR(VDAT)=2003
GROUP BY OLVJ;



Írassa ki az olvasók olvasójegy-számát és az egyes olvasók által 2003 második felében befizetett késedelmi díjak összegét „Késedelmi díj” néven! (Feltéve, hogy a késedelmi díjakat a könyvek visszahozatalakor fizették be.)

SELECT OLVJ, SUM(KDIJ) AS "Késedelmi díj"
FROM KOLCS
WHERE YEAR(VDAT)=2003 AND
    MONTH(VDAT) BETWEEN 7 AND 12
GROUP BY OLVJ;



Írassa ki az olvasók olvasójegy-számát és az egyes olvasók által 2003 szeptemberében befizetett késedelmi díjak összegét „Késedelmi díj” néven! (Feltéve, hogy a késedelmi díjakat a könyvek visszahozatalakor fizették be.)

SELECT OLVJ, SUM(KDIJ) AS "Késedelmi díj"
FROM KOLCS
WHERE YEAR(VDAT)=2003 AND
    MONTH(VDAT)=9
GROUP BY OLVJ;



Írassa ki az olvasók olvasójegy-számát és az egyes olvasók által 2003-ban befizetett késedelmi díjak összegét „Késedelmi díj” néven, és rendezze a sorokat a befizetett díjak szerint! (Feltéve, hogy a késedelmi díjakat a könyvek visszahozatalakor fizették be.)

SELECT OLVJ, SUM(KDIJ) AS "Késedelmi díj"
FROM KOLCS
WHERE YEAR(VDAT)=2003
GROUP BY OLVJ
ORDER BY SUM(KDIJ);



Írassa ki az olvasók olvasójegy-számát és az egyes olvasók által 2003-ban befizetett késedelmi díjak összegét „Késedelmi díj” néven, és rendezze a sorokat a befizetett díjak szerint fordított sorrendben! (Feltéve, hogy a késedelmi díjakat a könyvek visszahozatalakor fizették be.)

SELECT OLVJ, SUM(KDIJ) AS "Késedelmi díj"
FROM KOLCS
WHERE YEAR(VDAT)=2003
GROUP BY OLVJ
ORDER BY SUM(KDIJ) DESC;



Írassa ki a 2003-ban legtöbb késedelmi díjat befizetõ olvasók közül az elsõ 10 olvasó olvasójegy-számát és az egyes olvasók által befizetett késedelmi díjak összegét „Késedelmi díj” néven! (Feltéve, hogy a késedelmi díjakat a könyvek visszahozatalakor fizették be.)

SELECT TOP 10 OLVJ, SUM(KDIJ) AS "Késedelmi díj"
FROM KOLCS
WHERE YEAR(VDAT)=2003
GROUP BY OLVJ
ORDER BY SUM(KDIJ) DESC;



Írassa ki az 1000 Ft-nál több késedelmi díjat befizetõ olvasók olvasójegy-számát és az egyes olvasók által befizetett késedelmi díjak összegét „Késedelmi díj” néven!

SELECT OLVJ, SUM(KDIJ) AS "Késedelmi díj"
FROM KOLCS
GROUP BY OLVJ
HAVING SUM(KDIJ)>1000;



Írassa ki a 2003-ban 1000 Ft-nál több késedelmi díjat befizetõ olvasók olvasójegy-számát és az egyes olvasók által befizetett késedelmi díjak összegét „Késedelmi díj” néven! (Feltéve, hogy a késedelmi díjakat a könyvek visszahozatalakor fizették be.)

SELECT OLVJ, SUM(KDIJ) AS "Késedelmi díj"
FROM KOLCS
WHERE YEAR(VDAT)=2003
GROUP BY OLVJ
HAVING SUM(KDIJ)>1000;



KÖLCSÖNZÉSEK ADATAINAK KIÍRATÁSA



Írassa ki a könyvtárból kölcsönzõ olvasók olvasójegy-számát, valamint a kikölcsönzött könyvek raktári jelzetét!

SELECT OLVJ, RAKTJ
FROM KOLCS;



Írassa ki a könyvtárból kölcsönzõ olvasók olvasójegy-számát, valamint a kikölcsönzött könyvek raktári jelzetét olvasójegy-szám, azon belül pedig raktári jelzet szerint rendezve!

SELECT OLVJ, RAKTJ
FROM KOLCS
ORDER BY OLVJ, RAKTJ;



Írassa ki az olvasók olvasójegy-számát, valamint a kikölcsönzött könyvek raktári jelzetét azokra a kölcsönzésekre, amelyek 2003 második negyedévében történtek! Rendezze a kapott sorokat elsõdlegesen olvasójegy-szám, ezen belül pedig raktári jelzet szerint!

SELECT OLVJ, RAKTJ
FROM KOLCS
WHERE YEAR(KIDAT)=2003 AND
    MONTH(KIDAT) IN (4,5,6)
ORDER BY OLVJ, RAKTJ;



Írassa ki a könyvtárból kölcsönzõ olvasók olvasójegy-számát, valamint a kikölcsönzött könyvek raktári jelzetét olvasójegy-szám, azon belül pedig raktári jelzet szerint rendezve! (Ha egy olvasó többször is kölcsönzött egy könyvet, csak egyszer írassa ki!)

SELECT DISTINCT OLVJ, RAKTJ
FROM KOLCS
ORDER BY OLVJ, RAKTJ;



Írassa ki a könyvtárból kölcsönzõ olvasók nevét és olvasójegy-számát, valamint a kikölcsönzött könyvek raktári jelzetét olvasójegy-szám, azon belül pedig raktári jelzet szerint rendezve! (Ha egy olvasó többször is kölcsönzött egy könyvet, csak egyszer írassa ki!)

SELECT DISTINCT KOLCS.OLVJ, NEV, RAKTJ
FROM KOLCS, OLV
WHERE KOLCS.OLVJ=OLV.OLVJ
ORDER BY KOLCS.OLVJ, RAKTJ;

vagy

SELECT DISTINCT KOLCS.OLVJ, NEV, RAKTJ
FROM KOLCS INNER JOIN OLV ON KOLCS.OLVJ=OLV.OLVJ
ORDER BY KOLCS.OLVJ, RAKTJ;



Írassa ki a könyvtárba beiratkozott olvasók nevét és olvasójegy-számát, valamint a kikölcsönzött könyvek raktári jelzetét olvasójegy-szám, azon belül pedig raktári jelzet szerint rendezve! (Ha egy olvasó többször is kölcsönzött egy könyvet, csak egyszer írassa ki; ha pedig még egyszer sem kölcsönzött, a nevét és olvasójegy-számát akkor is írassa ki!)

SELECT DISTINCT KOLCS.OLVJ, NEV, RAKTJ
FROM KOLCS RIGHT JOIN OLV ON KOLCS.OLVJ=OLV.OLVJ
ORDER BY KOLCS.OLVJ, RAKTJ;



Írassa ki a könyvtárból kölcsönzõ olvasók olvasójegy-számát, valamint a kikölcsönzött könyvek számát "Kölcsönzések száma" néven olvasójegy-szám szerint rendezve!

SELECT OLVJ, COUNT(RAKTJ) AS "Kölcsönzések száma"
FROM KOLCS
GROUP BY OLVJ
ORDER BY OLVJ;



Írassa ki a könyvtárból kölcsönzõ olvasók olvasójegy-számát, valamint az általuk kikölcsönzött könyvek számát "Kölcsönzések száma" néven a kikölcsönzött könyvek száma szerint fordított sorrendben rendezve!

SELECT OLVJ, COUNT(RAKTJ) AS "Kölcsönzések száma"
FROM KOLCS
GROUP BY OLVJ
ORDER BY COUNT(RAKTJ) DESC;



Hozzon létre egy új táblát TEMP néven egy ún. "aktív" lekérdezéssel, amely az olvasók olvasójegy-számait és az általuk kikölcsönzött könyvek raktári jelzetét tartalmazza! (Ha egy olvasó többször is kikölcsönzött egy könyvet, az értékeket csak egyszer írassa ki!)

Ezután írassa ki a TEMP táblából a könyvtárból kölcsönzõ olvasók olvasójegy-számát, valamint az általuk kikölcsönzött könyvek számát "Kölcsönzések száma" néven a kikölcsönzött könyvek száma szerint fordított sorrendben rendezve!

Fogalmazza meg, mi lesz a különbség akkor, ha nem a TEMP, hanem az eredeti KOLCS táblát használja a második lekérdezésben!

SELECT DISTINCT OLVJ, RAKTJ INTO TEMP
FROM KOLCS;

SELECT OLVJ, COUNT(RAKTJ) AS "Kölcsönzések száma"
FROM TEMP
GROUP BY OLVJ
ORDER BY COUNT(RAKTJ) DESC;

(Ha a TEMP táblát használjuk, nem tekintjük különbözõ kölcsönzéseknek azokat, amikor egy olvasó többször kölcsönözte ki ugyanazt a könyvet. Ha viszont a KOLCS táblát hasnzáljuk, ezek a kölcsönzések is benne lesznek a COUNT(RAKTJ) csoportfüggvény által szolgáltatott értékben.)



Írassa ki egy megadott olvasó olvasójegy-számát, valamint az általa kikölcsönzött könyvek számát "Kölcsönzések száma" néven!

SELECT OLVJ, COUNT(RAKTJ) AS "Kölcsönzések száma"
FROM KOLCS
WHERE OLVJ=[Olvasójegy száma?]
GROUP BY OLVJ;



Írassa ki egy megadott olvasó olvasójegy-számát, az általa kikölcsönzött, valamint a már visszahozott könyvek számát "Kölcsönzések száma", ill. "Visszahozott könyvek száma" néven!

SELECT OLVJ, COUNT(RAKTJ) AS "Kölcsönzések száma", COUNT(VDAT) AS "Visszahozott könyvek száma"
FROM KOLCS
WHERE OLVJ=[Olvasójegy száma?]
GROUP BY OLVJ;



Írassa ki egy megadott olvasó nevét és olvasójegy-számát, valamint az általa kikölcsönzött könyvek számát "Kölcsönzések száma" néven!

SELECT OLV.OLVJ, NEV, COUNT(RAKTJ) AS "Kölcsönzések száma"
FROM KOLCS, OLV
WHERE (KOLCS.OLVJ=OLV.OLVJ) AND (OLV.OLVJ=[Olvasójegy száma?])
GROUP BY OLV.OLVJ, NEV;



Írassa ki Puk Kata és Zuzu Petasz kölcsönzéseinek adatait kiviteli dátum szerint rendezve!
(Megjegyzés: lehet, hogy a hölgyeknek második keresztnevük is van!)

SELECT *
FROM OLV INNER JOIN KOLCS ON OLV.OLVJ=KOLCS.OLVJ
WHERE (NEV LIKE "Puk Kata*") OR (NEV LIKE "Zuzu Petasz*")
ORDER BY KIDAT;

vagy

SELECT *
FROM OLV INNER JOIN KOLCS ON OLV.OLVJ=KOLCS.OLVJ
WHERE NEV LIKE "Puk Kata*"
ORDER BY KIDAT
UNION
SELECT *
FROM OLV INNER JOIN KOLCS ON OLV.OLVJ=KOLCS.OLVJ
WHERE NEV LIKE "Zuzu Petasz*"
ORDER BY KIDAT;



Írassa ki Puk Kata és Zuzu Petasz kölcsönzéseinek adatait kiviteli dátum szerint rendezve! Ha a hölgyek egyszer sem kölcsönöztek, a személyes adataikat akkor is írassák ki!
(Megjegyzés: lehet, hogy a hölgyeknek második keresztnevük is van!)

SELECT *
FROM OLV LEFT JOIN KOLCS ON OLV.OLVJ=KOLCS.OLVJ
WHERE (NEV LIKE "Puk Kata*") OR (NEV LIKE "Zuzu Petasz*")
ORDER BY KIDAT;

vagy

SELECT *
FROM OLV LEFT JOIN KOLCS ON OLV.OLVJ=KOLCS.OLVJ
WHERE NEV LIKE "Puk Kata*"
ORDER BY KIDAT
UNION
SELECT *
FROM OLV LEFT JOIN KOLCS ON OLV.OLVJ=KOLCS.OLVJ
WHERE NEV LIKE "Zuzu Petasz*"
ORDER BY KIDAT;



Írassa ki a könyvtárból kölcsönzõ olvasók olvasójegy-számát, a könyvek kiviteli és visszahozatali dátumát, valamint azt az idõtartamot (napokban megadva) "Kölcsönzési idõ" néven, ameddig az általuk kölcsönzött könyvek náluk voltak! Az eredményül kapott sorokat rendezze olvasójegy-szám szerint!
(A kölcsönzéseket csak akkor vegye figyelembe, ha a kikölcsönzött könyvet már visszahozták!)

SELECT OLVJ, KIDAT, VDAT, VDAT-KIDAT AS "Kölcsönzési idõ"
FROM KOLCS
WHERE VDAT IS NOT NULL
ORDER BY OLVJ;



Írassa ki a könyvtárból kölcsönzõ olvasók olvasójegy-számát, valamint azt az idõtartamot (napokban megadva) "Kölcsönzési idõ" néven, ameddig az általuk kölcsönzött könyvek náluk voltak! Az eredményül kapott sorokat rendezze olvasójegy-szám szerint!
(A kölcsönzéseket akkor is vegye figyelembe az aktuális dátum szerinti visszahozatali dátummal, ha a kikölcsönzött könyvet még nem hozták vissza!)

SELECT OLVJ, IIF(VDAT IS NULL, DATE()-KIDAT, VDAT-KIDAT) AS "Kölcsönzési idõ"
FROM KOLCS
ORDER BY OLVJ;

vagy

SELECT OLVJ, DATE()-KIDAT AS "Kölcsönzési idõ", "Kölcsönzés alatt" AS "STÁTUSZ"
FROM KOLCS
WHERE VDAT IS NULL
ORDER BY OLVJ
UNION
SELECT OLVJ, VDAT-KIDAT AS "Kölcsönzési idõ", "Visszahozták" AS "STÁTUSZ"
FROM KOLCS
WHERE VDAT IS NOT NULL
ORDER BY OLVJ;

(Megjegyzés: a második lekérdezést kiegészítettük egy "STÁTUSZ" nevû mezõvel, amely az egyes soroknak megfelelõ kölcsönzések jelenlegi állapotát adja meg szöveges formában.)



Írassa ki a könyvtárból kölcsönzõ olvasók olvasójegy-számát, valamint azt a legrövidebb és leghosszabb idõtartamot (napokban), ameddig az általuk kölcsönzött könyvek náluk voltak! Az eredményül kapott sorokat rendezze olvasójegy-szám szerint!
(A kölcsönzéseket csak akkor vegye figyelembe, ha a kikölcsönzött könyvet már visszahozták!)

SELECT OLVJ, MIN(VDAT-KIDAT) AS "Legrövidebb kölcsönzési idõ", MAX(VDAT-KIDAT) AS "Leghosszabb kölcsönzési idõ"
FROM KOLCS
WHERE VDAT IS NOT NULL
GROUP BY OLVJ
ORDER BY OLVJ;



Írassa ki a könyvtárból kölcsönzõ olvasók olvasójegy-számát, valamint azt a legrövidebb és leghosszabb idõtartamot (napokban), ameddig az általuk kölcsönzött könyvek náluk voltak! Az eredményül kapott sorokat rendezze olvasójegy-szám szerint!
(A kölcsönzéseket akkor is vegye figyelembe az aktuális dátum szerinti visszahozatali dátummal, ha a kikölcsönzött könyvet még nem hozták vissza!)

SELECT OLVJ, MIN(VDAT-KIDAT) AS "Legrövidebb kölcsönzési idõ",
                          MAX(VDAT-KIDAT) AS "Leghosszabb kölcsönzési idõ"
FROM KOLCS
WHERE VDAT IS NOT NULL
GROUP BY OLVJ
ORDER BY OLVJ
UNION
SELECT OLVJ, MIN(DATE()-KIDAT) AS "Legrövidebb kölcsönzési idõ",
                          MAX(DATE()-KIDAT) AS "Leghosszabb kölcsönzési idõ"
FROM KOLCS
WHERE VDAT IS NULL
GROUP BY OLVJ
ORDER BY OLVJ;



Írassa ki a kikölcsönzött, de még nem visszahozott könyvekre a könyvek raktári jelzetét, a kölcsönzõ olvasók olvasójegy-számát, a könyvek kiviteli dátumát, valamint 20 nap kölcsönzési idõt feltételezve
(1) ha a könyv kölcsönzése még nem járt le, a várható visszahozatali dátumot,
(2) ha a könyv kölcsönzése már lejárt, egy "Lejárt!" szöveget!
Az eredményül kapott sorokat rendezze olvasójegy-szám szerint!

SELECT OLVJ, RAKTJ, KIDAT, IIF(DATE()-KIDAT>20, "LEJÁRT!", KIDAT+20) AS "VISSZAHOZATAL"
FROM KOLCS
WHERE VDAT IS NULL
ORDER BY OLVJ;

vagy

SELECT OLVJ, RAKTJ, KIDAT, "Lejárt!" AS "VISSZAHOZATAL"
FROM KOLCS
WHERE (VDAT IS NULL) AND
               (DATE()-KIDAT>20)
ORDER BY OLVJ
UNION
SELECT OLVJ, RAKTJ, KIDAT, KIDAT+20 AS "VISSZAHOZATAL"
FROM KOLCS
WHERE (VDAT IS NULL) AND
               (DATE()-KIDAT<=20)
ORDER BY OLVJ;



Írassa ki a könyvek raktári jelzetét és a könyvek kölcsönzéseinek számát!

SELECT RAKTJ, COUNT(RAKTJ) AS "Kölcsönzések száma"
FROM KOLCS
GROUP BY RAKTJ;



Írassa ki a könyvek raktári jelzetét és a könyvek kölcsönzéseinek számát azokra a könyvekre, amelyeket legalább ötször kikölcsönöztek már!

SELECT RAKTJ, COUNT(RAKTJ) AS "Kölcsönzések száma"
FROM KOLCS
GROUP BY RAKTJ
HAVING COUNT(RAKTJ)>=5;



Írassa ki azoknak a könyveknek az adatait (raktári jelzet, szerzõ, cím) és kölcsönzéseinek számát, amelyeket legalább ötször kikölcsönöztek már! (A kapott sorokat rendezze raktári jelzet szerint!)

SELECT RAKTJ, SZERZ, CIM
FROM KONYV
WHERE RAKTJ IN
    (SELECT RAKTJ
    FROM KOLCS
    GROUP BY RAKTJ
    HAVING COUNT(RAKTJ)>=5)
ORDER BY RAKTJ;

vagy

SELECT KONYV.RAKTJ, SZERZ, CIM, COUNT(OLVJ) AS "Kölcsönzések száma"
FROM KONYV INNER JOIN KOLCS ON KONYV.RAKTJ=KOLCS.RAKTJ
GROUP BY KONYV.RAKTJ, SZERZ, CIM
HAVING COUNT(KONYV.RAKTJ)>=5
ORDER BY KONYV.RAKTJ;

(Megjegyzés: a második lekérdezésben a könyvek kölcsönzéseinek számát is ki tudjuk íratni.)



Írassa ki azoknak az olvasóknak az adatait (olvasójegy-szám, név), akik olyan könyveket kölcsönöztek, amelyeket legalább ötször kikölcsönöztek már! Ha egy olvasó több ilyen könyvet is kölcsönzött, az adatait csak egyszer írassa ki! A kapott sorokat rendezze olvasójegy-szám szerint!

SELECT DISTINCT OLV.OLVJ, NEV
FROM OLV INNER JOIN KOLCS ON OLV.OLVJ=KOLCS.OLVJ
WHERE RAKTJ IN
    (SELECT RAKTJ
    FROM KOLCS
    GROUP BY RAKTJ
    HAVING COUNT(RAKTJ)>=5)
ORDER BY OLV.OLVJ;


Boda István, 2003. december 2.