beágyazott lekérdezés - feladat
Importáljuk be a Dolgozó (dolgozo.txt) és Kifizetés (kifizetes.txt) táblákat egy Fizetés nevű adatbázisba!
Tekintsük most a Dolgozó és Kifizetés táblákat, amelyek az alábbi módon néznek ki:
Torzsszam | Nev | Szul_hely | Szul_ido | Fizetes |
K1345 | Teszt Elek | Békéscsaba | 1998. 10. 21. | 220000 |
K8531 | Mák Virág | Békéscsaba | 1950. 12. 08. | 115000 |
K3692 | Vad Alma | Győr | 1967. 11. 12. | 230000 |
K7461 | Tök Ödön | Győr | 1954. 04. 22. | 310000 |
K1237 | Hű Jenő | Szeged | 1966. 08. 12. | 180000 |
Kifizetes_ido | Kifizetett_ber | adoeloleg | Torzsszam |
2017.01.02. | 146300 | 73700 | K1345 |
2017.01.02 | 76475 | 38525 | K8531 |
2017.01.02. | 152950 | 77050 | K3692 |
Egyetlen értéket visszaadó segéd lekérdezés: Ez a legegyszerűbb eset, ugyanis ilyenkor minden a hagyományos módon történik, azzal a különbséggel, hogy a feltételként megadott kifejezésben a belső lekérdezés által szolgáltatott értéket használja fel a rendszer.
Készítsünk olyan lekérdezést, amely a Dolgozó táblából kilistázza azon dolgozók nevét és fizetését, akik az átlag alatt keresnek! Egészítsd ki a lekérdezést, hogy a megfelelő eredményt adja a lekérdezés.
SELECT Nev, Fizetes FROM Dolgozo WHERE Fizetes < (….)
Megoldás: SELECT Avg(Fizetes) FROM Dolgozo;Egy oszlopot visszaadó segéd lekérdezés: A visszaadott oszlop adatait használja fel. Két lehetőség van:- <oszlopkifejezés>
[NOT] IN <belső lekérdezés> Ennél a típusnál az <oszlopkifejezés> paraméterben megadott kifejezés értékéről fogja eldönteni a rendszer, hogy szerepel-e a belső lekérdezés által előállított oszlop adatai között. [NOT] <oszlopkifejezés> <reláció művelet> ALL|ANY <belső lekérdezés>
Ennél a típusnál az <oszlopkifejezés>paraméterben megadott kifejezés értékére vonatkozóan azt fogja vizsgálni a rendszer, hogy a megadott reláció művelet teljesül-e a belső lekérdezés által előállított oszlop adataira. Ha az ALL kulcsszót használjuk, a feltétel csak akkor lesz igaz, ha a reláció művelet az oszlop minden elemére teljesül, míg az ANY használatakor elegendő egyetlen elemre teljesülnie. A NOT kulcsszó a feltétel ellentétjét jelenti.
- <oszlopkifejezés>
A Kifizetés tábla felhasználásával készítsünk olyan lekérdezést, amely a Dolgozó táblából kilistázza azon dolgozók nevét és törzsszámát, akik számára még nem történt kifizetés! Írd meg a lekérdezést, hogy a megfelelő eredményt adja.
Az alábbi parancsot ismerjük: ...(SELECT Torzsszam FROM Kifizetes)
Megoldás: SELECT Nev, Torzsszam FROM Dolgozo WHERE Torzsszam NOT IN (SELECT Torzsszam FROM Kifizetes)- Készítsünk olyan listát, amely a Dolgozó táblából kilistázza azon dolgozók adatait, akik minden Békéscsaba vagy Szegeden született dolgozónál többet keresnek!
Megoldás:
SELECT * FROM Dolgozo WHERE Fizetes >
ALL (SELECT Fizetes FROM Dolgozo WHERE Szul_hely LIKE "Békescsaba" OR Szul_hely LIKE "Szeged")
Последнее изменение: понедельник, 27 ноября 2017, 10:02