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: https://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



