MySQL-ben lehetséges 1 lekérdezéssel 2 vagy több táblából adatot kinyerni?
SELECT ...
FROM tábla1, tábla2, ..., táblaN
WHERE ...;
Persze.
Ezeknek nézz utána:
-Természetes összekapcsolás (inner join)
-Küldő összekapcsolás (outer join)
-Theta join
...
Mind egy kicsit másra jó, amit az előző írt pl. Theta join. De ezen kívül lehet még allekérdezésekkel is táblát összekapcsolni.
Bocs, elírtam, az elsőé nem Theta, hanem a másik kettőből valamelyik. :)
Természetes összekapcsolás. Állítsuk elő például az Áru (cikkszám, megnevezés) és
Vásárlás (cikkszám, mennyiség) táblák természetes összekapcsolását:
SELECT Áru.cikkszám, megnevezés, mennyiség
FROM Áru, Vásárlás
WHERE Áru.cikkszám = Vásárlás.cikkszám;
A fentivel egyenértékű, szintén gyakran használt szintaxis:
SELECT Áru.cikkszám, megnevezés, mennyiség
FROM Áru INNER JOIN Vásárlás ON Áru.cikkszám = Vásárlás.cikkszám;
Megjegyzés. A fenti példákban a SELECT után nem elegendő csak „cikkszám”-ot írni,
annak ellenére, hogy esetünkben „Áru.cikkszám = Vásárlás.cikkszám”, tehát mindegy, melyik
cikkszámot választja a rendszer. Általában, ha egy lekérdezésben több azonos oszlopnév
szerepel, az SQL rendszerek megkövetelik a táblanév megadását.
Külső összekapcsolás. A fenti példát alapul véve, ha az eredménytáblában valamennyi
áru adatait szerepeltetni szeretnénk, akkor ez – az Oracle rendszer korábbi verzióiban használt
jelöléssel – az alábbi módon adható meg:
SELECT Áru.cikkszám, megnevezés, mennyiség
FROM Áru, Vásárlás
WHERE Áru.cikkszám (+)= Vásárlás.cikkszám;
Az SQL szabvány szerint a LEFT, RIGHT vagy FULL OUTER JOIN kulcsszavakkal
adható meg külső összekapcsolás, például:
SELECT Áru.cikkszám, megnevezés, mennyiség
FROM Áru LEFT OUTER JOIN Vásárlás
ON Áru.cikkszám = Vásárlás.cikkszám;
Théta join:
Itt a táblák Descartes-szorzatából tetszőleges feltétel szerint választunk ki sorokat
SELECT * FROM T1,T2 WHERE feltétel;
Első válaszoló megoldása direkt szorzatot eredményez és azt tudod szűrni, de ez egy relatív lassú és költséges dolog.
A joinok hatékonyabbak.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!