⊗ppPmDOGD 382 of 447 menu

Adatok lekérése kapcsolt táblákból PHP-ben

Készítsünk egy lekérdezést, amely kilistázza az összes felhasználót a városaikkal együtt. Ehhez szükségünk lesz a LEFT JOIN parancsra:

Ennek szintaxisa a következő:

SELECT mezők FROM tábla_neve LEFT JOIN kapcsolt_tábla_neve ON kapcsolati_feltétel WHERE kiválasztási_feltétel

Nézzük meg részletesen a parancs szintaxisának egyes részeit.

Mezők

Mivel a kiválasztás több táblából történik, az összes mező kiválasztása a * segítségével nem fog működni. A következő lekérdezés csak a főtábla mezőit választja ki, de nem a kapcsolt tábláét:

SELECT *

Ahhoz, hogy az adatok minden táblából kiválasztásra kerüljenek, a * elé meg kell adni a tábla nevét, amelyből választunk:

SELECT users.*, cities.*

Vagy felsorolhatjuk a szükséges mezőket a tábla nevével együtt előttük:

SELECT users.name, cities.name

Ennek a két módszernek van egy problémája. Az, hogy ha a táblákban lévő mezőknek azonos a nevük, akkor a PHP tömbben névütközés következik be, és csak egy mező marad, a másik pedig nem lesz jelen.

A probléma megoldásához az ütköző neveket át kell nevezni a as paranccsal:

SELECT users.name, cities.name as city_name

Kapcsolat

A ON parancs után meg kell adnunk a két tábla azon mezőit, amelyek alapján a kapcsolat létrejön. Esetünkben ez a id mező a városok táblájából és a city_id mező a felhasználók táblájából:

ON cities.id=users.city_id

Lekérdezés

Végeredményben a felhasználókat városaikkal együtt kilistázó lekérdezés így fog kinézni:

SELECT users.name, cities.name as city_name FROM users LEFT JOIN cities ON cities.id=users.city_id

Gyakorlati feladatok

Tegyük fel, hogy van egy termékek táblája és egy kategóriáik táblája. Írj egy lekérdezést, amely kilistázza a termékek nevét a kategóriáikkal 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