⊗pyPmDOGD 123 of 129 menu

Tietojen hakeminen linkitetyistä tauluista Pythonissa

Tehdään kysely, joka hakee kaikki käyttäjät yhdessä heidän kaupunkiensa kanssa. Tätä varten tarvitaan komento LEFT JOIN:

Sen syntaksi on seuraava:

SELECT kentät FROM taulun_nimi LEFT JOIN linkitetyn_taulun_nimi ON linkitysehto WHERE hakuehto

Käydään läpi tämän komennon syntaksin yksittäiset osat.

Kentät

Koska haku tapahtuu useista tauluista, kaikkien kenttien valitseminen *:lla ei toimi. Seuraava kysely valitsee kentät vain päätaulusta, muttei linkitetystä taulusta:

SELECT *

Jotta tiedot haettaisiin kaikista tauluista, tulee *:n edessä määrittää taulun nimi, josta haetaan:

SELECT users.*, cities.*

Vaihtoehtoisesti voidaan luetella tarvitsemamme kentät määrittämällä taulun nimi niiden edessä:

SELECT users.name, cities.name

Näissä kahdessa tavassa on ongelma. Asia on siinä, että jos kentillä tauluissa on samat nimet, tapahtuu Python-taulukossa nimikonflikti ja vain yksi kenttä voittaa, eikä toista ole.

Ongelman ratkaisemiseksi on ristiriitaiset nimet uudelleennimettävä komennolla as:

SELECT users.name, cities.name as city_name

Linkitys

Komennon ON jälkeen meidän on määritettävä kahdesta taulusta ne kentät, joiden perusteella linkitys toteutuu. Meidän tapauksessamme nämä ovat kenttä id kaupunkien taulusta ja kenttä city_id käyttäjien taulusta:

ON cities.id=users.city_id

Kysely

Lopulta kysely, joka hakee käyttäjät yhdessä heidän kaupunkiensa kanssa näyttää seuraavalta:

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

Käytännön tehtävät

Oletetaan, että sinulla on tuotetaulu ja niiden kategorioiden taulu. Kirjoita kysely, joka hakee tuotteiden nimet yhdessä niiden kategorioidensa kanssa.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää