oktatas:adatbazis-kezeles:sql:toebb_tabla
Tartalomjegyzék
SQL több tábla
- Szerző: Sallai András
- Copyright © Sallai András, 2012, 2014
- Licenc: GNU Free Documentation License 1.3
- Web: http://szit.hu
Több táblát többféle módon köthetünk össze
Logikus az JOIN használata. De megoldható a WHERE direktívával is.
INNER JOIN
Legyen egy Vevők és egy Rendelések táblánk.
Vevok | ||||||
---|---|---|---|---|---|---|
vevoAz | vevoNev | kapcsolatNev | varos | cim | iranyitoSzam | orszag |
1 | Trend Bt | Nagy János | Miskolc | Pokol u. 35. | 3400 | Magyarország |
2 | Tompa Kft. | Kis Péter | Szolnok | Piros tér 22. | 4233 | Magyarország |
3 | Bocs Bt. | Bocs Ernő | Szolnok | Tekerentyű u. 48. | 4832 | Magyarország |
Rendelesek | ||||
---|---|---|---|---|
rendelesAz | vevoAz | dolgozoAz | datum | szallitoAz |
10201 | 2 | 5 | 2014-09-15 | 4 |
10203 | 27 | 3 | 2014-09-16 | 3 |
10204 | 48 | 8 | 2014-09-17 | 3 |
SELECT vevoNev, rendelesAz, dolgozoAz FROM Vevok INNER JOIN Rendelesek ON Vevok.vevoAz = Rendelesek.vevoAz
Eredmény:
vevoNev | rendelesAz | dolgozoAz |
---|---|---|
Tompa Kft. | 10201 | 5 |
Három tábla INNER JOIN
SELECT helyseg.orszag, szalloda.nev, szalloda.besorolas FROM (helyseg INNER JOIN szalloda ON helyseg.az = szalloda.helyseg_az) INNER JOIN tavasz ON szalloda.az = tavasz.szalloda_az WHERE tavasz.indulas >= #3/1/2011# AND tavasz.indulas <=#3/31/2011# AND szalloda.tengerpart_tav = 0
Három tábla WHERE direktíván belül
SELECT helyseg.orszag, szalloda.nev, szalloda.besorolas FROM helyseg, szalloda, tavasz WHERE helyseg.az = szalloda.helyseg_az AND szalloda.az = tavasz.szalloda_az AND tavasz.indulas >= #3/1/2011# AND tavasz.indulas <=#3/31/2011# AND szalloda.tengerpart_tav = 0
LEFT JOIN
Legyen egy Vevők és egy Rendelések táblánk.
Vevok | ||||||
---|---|---|---|---|---|---|
az | vevoNev | kapcsolatNev | telepules | cim | iranyitoszam | orszag |
1 | Trend Bt | Nagy János | Miskolc | Pokol u. 35. | 3400 | Magyarország |
2 | Tompa Kft. | Kis Péter | Szolnok | Piros tér 22. | 4233 | Magyarország |
3 | Bocs Bt. | Bocs Ernő | Szolnok | Tekerentyű u. 48. | 4832 | Magyarország |
Rendelesek | ||||
---|---|---|---|---|
rendelesAz | vevoAz | dolgozoAz | datum | szallitoAz |
10201 | 2 | 5 | 2014-09-15 | 4 |
10203 | 27 | 3 | 2014-09-16 | 3 |
10204 | 48 | 8 | 2014-09-17 | 3 |
Szeretnénk megtudni, mely vevők rendeltek és mi a rendelés azonosítójuk.
SELECT vevoNev, rendelesAz FROM Vevok LEFT JOIN Rendelesek ON Vevok.vevoAz = Rendelesek.vevoAz
Az eredmény:
vevoNev | rendelesAz |
---|---|
Trend Bt | NULL |
Tompa Kft. | 10201 |
Bocs Bt. | NULL |
Az eredményből kiderül, hogy vannak olyan vevőink akik soha nem rendeltek, de benne vannak az adatbázisban.
RIGHT JOIN
Legyen egy Vevők és egy Rendelések táblánk, ami LEFT JOIN részben is volt.
Vevok | ||||||
---|---|---|---|---|---|---|
az | vevoNev | kapcsolatNev | telepules | cim | iranyitoszam | orszag |
1 | Trend Bt | Nagy János | Miskolc | Pokol u. 35. | 3400 | Magyarország |
2 | Tompa Kft. | Kis Péter | Szolnok | Piros tér 22. | 4233 | Magyarország |
3 | Bocs Bt. | Bocs Ernő | Szolnok | Tekerentyű u. 48. | 4832 | Magyarország |
Rendelesek | ||||
---|---|---|---|---|
rendelesAz | vevoAz | dolgozoAz | datum | szallitoAz |
10201 | 2 | 5 | 2014-09-15 | 4 |
10203 | 27 | 3 | 2014-09-16 | 3 |
10204 | 48 | 8 | 2014-09-17 | 3 |
Szeretnénk megtudni, kik azok a dolgozók akik felvettek olyan rendeléseket, ahol nincs vevő megadva, de azokat is akik megadták.
SELECT vevoNev, rendelesAz, dolgozoAz FROM Vevok RIGHT JOIN Rendelesek ON Vevok.vevoAz = Rendelesek.vevoAz
Eredmény:
vevoNev | rendelesAz | dolgozoAz |
---|---|---|
Tompa Kft. | 10201 | 5 |
NULL | 10203 | 3 |
NULL | 10204 | 8 |
Az eredményből láthatjuk, hogy a 3 és 8-as azonosítójú dolgozó nem vette fel a vevő nevét.
oktatas/adatbazis-kezeles/sql/toebb_tabla.txt · Utolsó módosítás: 2021/02/21 20:14 szerkesztette: admin