Adatbaziskezelesben kellene segitseg (? )
Kezdo vagyok, es csak magamtol kezdtem el tanulni adatbaziskezelest, es van egy feladatom amit nem tudok megoldani:
Ossze kell hozni egy termek tulajdonsagait tobb tablazatbol egy "Termek leirasa" nevu tablazatba a kovetkezo keppen:
Van egy "Kategoria" tablazat(oszlopai: ID/kategorianev), amibol ki lehet valasztani a termek kategoriajat, aztan ki kell valasztani a mertekegyseget egy "Mertekegyseg" tablazatbol(oszlopai: iD/Mertekegyseg neve) majd pedig ki kell valasztani a termek arat, egy "Ar" tablazatbol(oszlopai: Id/VetelAr), vegul meg a "Termek" tablazatbol (oszlopai: id/termek neve) magat a termeket.
A vegeredmeny valahogy igy kell kinezzen:
pl: elelmiszer, liter, 170ft, tej





Szak (szak_id [INT PK], nev [VARCHAR])
(1, első szak)
(2, második szak)
(3, harmadik szak)
Hallgato (hallgato_id [INT PK], szak_id [INT FK], vezeteknev [VARCHAR], keresztnev [VARCHAR])
(1, 1, Kiss, Pista)
(2, 1, Nagy, Józsi)
(3, 3, Saját, Magam)
(4, 4, Próba, Ella) (ilyet amúgy az FK megszorítás miatt nem lehet, de tegyük fel, hogy mégis)
Ami neked kell, az a SELECT-nek a JOIN kiterjesztése. Ennek több fajtája van:
INNER JOIN: Két táblát kapcsol össze, és csak azokat a rekordokat választja ki, amelyeknél mind az elsődleges kulcs, mind a külső kulcs értéke nem NULL.
> SELECT * FROM Szak INNER JOIN Hallgato ON Szak.szak_id = Hallgato.szak_id;
(szak.szak_id, szak.nev, hallgato.hallgato_id, hallgato.szak_id, hallgato.vezeteknev, hallgato.keresztnev)
(1, első szak, 1, 1, Kiss, Pista)
(1, első szak, 2, 1, Nagy, Józsi)
(3, harmadik szak, 3, 3, Saját, Magam)
LEFT JOIN: Két táblát kapcsol össze, és az ON bal oldalán lévő összes rekord kiválasztásra kerül. Azokhoz az elsődleges kulcsokhoz, amihez nem tartozik idegen kulcs az ON jobb oldalán lévő táblában, azok NULL-lal lesznek feltöltve.
> SELECT * FROM Szak LEFT JOIN Hallgato ON Szak.szak_id = Hallgato.szak_id;
(szak.szak_id, szak.nev, hallgato.hallgato_id, hallgato.szak_id, hallgato.vezeteknev, hallgato.keresztnev)
(1, első szak, 1, 1, Kiss, Pista)
(1, első szak, 2, 1, Nagy, Józsi)
(2, második szak, NULL, NULL, NULL, NULL)
(3, harmadik szak, 3, 3, Saját, Magam)
RIGHT JOIN: Hasonló, mint a LEFT JOIN, azzal a különbséggel, hogy az ON jobb oldalán lévő tábla összes rekordját kérdezi le, és amihez a bal oldalon nem talál értéket, azokat NULL-lal tölti fel.
> SELECT * FROM Szak RIGHT JOIN Hallgato ON Szak.szak_id = Hallgato.szak_id;
(szak.szak_id, szak.nev, hallgato.hallgato_id, hallgato.szak_id, hallgato.vezeteknev, hallgato.keresztnev)
(1, első szak, 1, 1, Kiss, Pista)
(1, első szak, 2, 1, Nagy, Józsi)
(3, harmadik szak, 3, 3, Saját, Magam)
(NULL, NULL, 4, 4, Próba, Ella)
Fejből írtam, lehet, nem hibátlan, de majd kijavítanak mások.










További kérdések:
Minden jog fenntartva © 2025, 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!