⊗pyPmDOGD 123 of 129 menu

Adatok lekérése kapcsolt táblákból Pythonban

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 lesz a LEFT JOIN parancsra:

Szintaxisa a következő:

SELECT mezők FROM tábla_neve LEFT JOIN kapcsolt_tábla_neve ON kapcsolat_feltétele 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 * használatával nem fog működni. A következő lekérdezés csak az alapértelmezett tábla mezőit választja ki, de nem a kapcsolt táblából:

SELECT *

Ahhoz, hogy az adatok minden táblából ki legyenek választva, a * elé meg kell adni a tábla nevét:

SELECT users.*, cities.*

Vagy felsorolhatjuk a szükséges mezőket az előttük álló táblanévvel együtt:

SELECT users.name, cities.name

Ennek a két módszernek van egy problémája. Az, hogy ha a táblák mezőinek neve megegyezik, akkor a Python tömbjében névütközés következik be, és csak az egyik mező marad meg, 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ók városaikkal együtt történő lekérdezésének a lekérdezése a következőképpen 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 tábla a kategóriáikkal. Írj egy lekérdezést, ami lekéri a termékek neveit 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