Logikus az JOIN használata. De megoldható a WHERE direktívával is.
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 |
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
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
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.
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.