⊗pyPmDOGD 123 of 129 menu

Seotud tabelitest andmete hankimine Pythonis

Teeme päringu, mis toob kõik kasutajad koos nende linnadega. Selleks on vaja käsku LEFT JOIN:

Selle süntaks on järgmine:

SELECT väljad FROM tabeli_nimi LEFT JOIN seotud_tabeli_nimi ON seosingutingimus WHERE valikutingimus

Vaatame üksikuid osi selle käsu süntaksist.

Väljad

Kuna valik tehakse mitmest tabelist, siis kõigi väljade valimine läbi * ei toimi. Järgmine päring valib väljad ainult põhitabelist, mitte seotud tabelist:

SELECT *

Selleks, et andmeid valitakse kõigist tabelitest, tuleb enne * määrata tabeli nimi valimiseks:

SELECT users.*, cities.*

Või saab loetleda vajalikud väljad koos tabeli nime määramisega nende ees:

SELECT users.name, cities.name

Neil kahel viisil on probleem. Asi on selles, et kui väljad tabelites on identsete nimedega, siis Pythoni massiivis tekib nimetuste konflikt ja ainult üks väljadest jääb alles, teist ei ole.

Probleemi lahendamiseks tuleb konfliktseid nimesid ümber nimetada läbi käsu as:

SELECT users.name, cities.name as city_name

Seos

Pärast käsku ON peame määrama kaks välja kahest tabelist, mille kaudu seos toimub. Meie puhul on see väli id linnade tabelist ja väli city_id kasutajate tabelist:

ON cities.id=users.city_id

Päring

Lõppkokkuvõttes näeb päring, mis toob kasutajad koos nende linnadega välja järgmine:

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

Praktilised ülesanded

Oletame, et teil on tabel toodetega ja tabel nende kategooriatega. Kirjutage päring, mis toob toodete nimed koos nende kategooriatega.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu