⊗ppPmDOFR 385 of 447 menu

Adatok rokon kapcsolatai PHP-ben

Tegyük fel, hogy az a feladatunk, hogy apákat és fiúkat tároljunk. Tegyük fel, hogy minden apának csak egy fia lehet, a fiúnak pedig viszont szintén lehet egy fia.

Ki kell találnunk, hogyan fogjuk tárolni az adatokat. Az első ötlet, ami eszünkbe juthat - készítsünk két táblát: parents az apáknak és sons a fiúknak. Majd kapcsoljuk össze ezt a két táblát valamilyen mezővel: son_id vagy parent_id.

Ez az ötlet azonban nem túl jó - hiszen ugyanaz a személy lehet egyszerre apa és fiú - és mindkét táblában tárolnunk kell, ami kényelmetlen, több helyet foglal és könnyen hibákhoz vezet.

Egy jobb megoldás - kössük össze a táblát önmagával: készítsünk egy users táblát, ebben tároljuk az összes felhasználót és mindenkinek készítsünk egy son_id mezőt, amiben a fiú id-ja lesz tárolva ugyanebből a táblából:

users
id name son_id
1 user1 2
2 user2 3
3 user3 null

Lekérdezések

Most írjunk egy lekérdezést, amelyik kiveszi a felhasználót a fiával együtt.

Először egyszerűen vegyük ki a felhasználókat:

SELECT * FROM users

Most csatoljuk (JOIN) hozzá a felhasználókhoz a fiaikat. A csatoláshoz a táblát önmagához fogjuk csatolni, ezért át kell neveznünk:

LEFT JOIN users as sons

Most már megadhatjuk az alap tábla és az átnevezett tábla kapcsolatát:

LEFT JOIN users as sons ON sons.id=users.son_id

Most adjuk meg a mezőket:

SELECT users.name as user_name, sons.name as son_name

Most rakjuk össze az egészet, és a következő lekérdezést kapjuk:

SELECT users.name as user_name, sons.name as son_name FROM users LEFT JOIN users as sons ON sons.id=users.son_id

Gyakorlati feladatok

Tegyük fel, hogy vannak kategóriáink. Minden kategória tartozhat egy szülő kategóriához, az pedig a saját szülő kategóriájához és így tovább. Írja le a tárolás szerkezetét.

Írjon egy lekérdezést, amelyik kiveszi a kategóriát a szülő kategóriájával együtt.

Írjon egy lekérdezést, amelyik kiveszi a kategóriát a szülőjével és a nagyszülőjével együtt.

Írjon egy lekérdezést, amelyik kiveszi a kategóriát a szülőjével, a nagyszülőjével és a dédszülőjével együtt.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás