LOGISZTIKAI ADATBÁZIS RENDSZEREK UNIÓ, ALLEKÉRDEZÉSEK Lénárt Balázs tanársegéd
TANTERV
Hét Dátum Előadó Előadások Időpont: szerda 8:30-10:00, helye: LFSZÁMG Dátum Gyakvezető 1. 9. 11. Tokodi Adatbázis kezelés 9. 10. Lénárt 2. 9. 18. Tokodi Adatbázis kezelés - alapfogalmak 9. 17. ----- ----- Gyakorlatok Időpont: páratlan kedd 8:30-10:00, helye: LFSZÁMG Bevezetés, a relációs adatbázisok és az SQL nyelv 3. 9. 25. Tokodi Adatmodellezés, relációs adatmodell 9. 24. Lénárt SQL alapok: adat lekérdezés, adat rögzítés 4. 10. 2. Tokodi Normalizálás 10. 1. ----- ----- 5. 10. 9. Tokodi Adatbázis modellek 10. 8. Lénárt 6. 10. 16. Tokodi Műveletek relációs adatbázisokban 10. 15. ----- ----- SQL: többtáblás lekérdezések, adat aggregáció 7. 10. 23. ----- ----- 10. 22. Lénárt Adatfeldolgozás Excelben 1., Feladat kiadása 8. 10. 30. Tokodi A logisztikai folyamat operatív irányításának adatbázisai 10. 29. ----- ----- 9. 11. 6. Tokodi 11. 5. Lénárt Adatfeldolgozás Excelben 2. A logisztikai fejlesztések adatbázisai 10. 11. 13. Tokodi Az informatikai rendszerek kialakítása 11. 12. ----- ----- 11. 11. 20. Tokodi 12. 11. 27. Tokodi Rendszermodellezés. Rendszerszervezés - alapfogalmak Az informatikai rendszerek szabályozási modellje, felépítése 11. 19. Lénárt SQL haladó 11. 26. ----- ----- 13. 12. 4. Tokodi Zárthelyi (számítógépes) 12. 3. Lénárt Konzultáció 14. 12. 11. Tokodi A logisztikai információs rendszer 12. 10. ----- -----
A gyakorlaton használt adatbázis felépítése
UNIÓ
A UNION (unió) utasítás lehetővé teszi, hogy két vagy több hasonló eredményhalmazból kiválasztott sorokat egyetlen eredményhalmazzá egyesítsünk. Példa: SELECT kont_id, leiras FROM kontener WHERE tipus <> 1 OR tulajdonos <> 1; SELECT kont_id, leiras FROM kontener WHERE tipus <> 1 UNION SELECT kont_id, leiras FROM kontener WHERE tulajdonos <> 1;
UNION szintaxis: SELECT COLUMN1 [, COLUMN2 ] FROM TABLE1 [, TABLE2 ] [ WHERE ] UNION SELECT COLUMN1 [, COLUMN2 ] FROM TABLE1 [, TABLE2 ] [ WHERE ] Figyelem, UNIÓ esetén nem jelennek meg duplikáltan a bejegyzések! Egyezés esetén csak egyszer. Ha szeretnénk mindet: SELECT COLUMN1 [, COLUMN2 ] FROM TABLE1 [, TABLE2 ] [ WHERE ] UNION ALL SELECT COLUMN1 [, COLUMN2 ] FROM TABLE1 [, TABLE2 ] [ WHERE ]
SELECT cegnev FROM ugyfel UNION SELECT leiras FROM kontener; Mi lesz ennek az eredménye? Kombinált lista! Ceva Logisztika Horváth Rudolf Hungaropedi Kft. Konténer HuSpedi Konténer MÁV Konténer MÁV bérelt MÁV Cargo Sufnituning Bt. Sunitunig Bt. Teszt Cég Kft. Waberer's zrt
INTERSECT Operator Két SELECT lekérdezés eredményét adja vissza, de csak azokat a sorokat, amik benne vannak mindkét táblában. Szintaxis: SELECT COLUMN1 [, COLUMN2 ] FROM TABLE1 [, TABLE2 ] [ WHERE ] INTERSECT SELECT COLUMN1 [, COLUMN2 ] FROM TABLE1 [, TABLE2 ] [ WHERE ] Mikor jó ez?
Példa: Keressük meg azokat az ügyfeleket, akikhez van hozzárendelve konténer! SELECT ugyfel_id FROM ugyfel INTERSECT SELECT tulajdonos FROM kontener; Eredmény: 1 2 3 4 5 Rendben, de hogy kérdezzük le a cégnevet? Később!
EXCEPT Operator Azokat a sorokat adja vissza az első SELECT lekérdezésből, amik nincsenek benne a másodikban. Szintaxis: SELECT COLUMN1 [, COLUMN2 ] FROM TABLE1 [, TABLE2 ] [ WHERE ] EXCEPT SELECT COLUMN1 [, COLUMN2 ] FROM TABLE1 [, TABLE2 ] [ WHERE ]
Példa: Ügyfelek, akikhez nincs hozzárendelve konténer. SELECT ugyfel_id FROM ugyfel EXCEPT SELECT tulajdonos FROM kontener; Eredmény: 6 7 8 Ezt vártuk!
GROUP BY, AGGREGÁLÁS SELECT COLUMN1 [, COLUMN2 ] FROM TABLE1 [, TABLE2 ] [ WHERE ] [ GROUP BY ] [ HAVING ] OPERATOR {UNION EXCEPT INTERSECT UNION ALL} SELECT COLUMN1 [, COLUMN2 ] FROM TABLE1 [, TABLE2 ] [ WHERE ] [ GROUP BY ] [ HAVING ] [ ORDER BY ]
Példa: Vasúti és közúti járművek száma. SELECT 'VASÚT', COUNT(*) FROM vjarmu UNION SELECT 'KÖZÚT', COUNT(*) FROM kjarmu Eredmény: VASÚT 69 KÖZÚT 4 Önálló feladat: + konténer szám + növekvő sorrendben
Önálló feladatok: Vasúti jármű és közúti járművek összes teherbírása Minimális teherbírás (1db) Konténer típusok, amik nem voltak még a terminálban Konténer típusok, amik voltak a terminálban Tároló terület, amin még nem volt konténer
ALLEKÉRDEZÉSEK
Az allekérdezés egy olyan SELECT kifejezés, amelyet egy SELECT utasítás valamelyik részébe ágyazunk be, így kapva meg a teljes lekérdezést. Szintaxis: SELECT COLUMN_NAME FROM TABLE WHERE COLUMN_NAME = ( SELECT COLUMN_NAME FROM TABLE WHERE CONDITIONS);
Egy sor az eredmény halmazban: Példa: Az az ügyfél, akiknek a legtöbb konténere van. SELECT * FROM ugyfel WHERE ugyfel_id = (SELECT TOP 1 tulajdonos FROM kontener GROUP BY tulajdonos ORDER BY count(tulajdonos) DESC);
Több sor az eredmény halmazban: Példa: Azok az ügyfelek, akiknek nincs konténere. SELECT * FROM ugyfel WHERE ugyfel_id IN (SELECT ugyfel_id FROM ugyfel INTERSECT SELECT tulajdonos FROM kontener);
Önálló feladat: 2013-09-09 08:01:30-kor érkezett konténer tulajdonosa KBC923 rendszámú járművel érkezett konténerek tulajdonosának cégneve 2013-09-10 09:39:23 és 2013-09-10 15:55:18 között érkezett járművek sofőrök nevei Próbáljuk meg két módon is megoldani! Allekérdezés LEFT JOIN
SQL ADATOK LEKÉRÉSE EXCELBE
60 Tulajdonos 50 40 30 20 Összeg 10 0 30 1 2 3 4 5 Típus 25 20 15 10 Összeg 5 0 Konténer HuSpedi Konténer MÁV Konténer MÁV bérelt
KÖSZÖNÖM A FIGYELMET!