⊗pyPmDOGD 123 of 129 menu

Henting av data fra relaterte tabeller i Python

La oss lage en spørring som henter alle brukere sammen med byene deres. For å gjøre dette trengs kommandoen LEFT JOIN:

Syntaksen ser slik ut:

SELECT felter FROM tabellnavn LEFT JOIN relatert_tabellnavn ON tilkoblingsbetingelse WHERE utvalgsbetingelse

La oss gå gjennom delene av syntaksen til denne kommandoen.

Felter

Siden utvalget kommer fra flere tabeller, vil ikke utvalg av alle felter via * fungere. Følgende spørring vil velge felter kun fra hovedtabellen, men ikke fra den relaterte:

SELECT *

For at data skal hentes fra alle tabellene, må du før * spesifisere navnet på tabellen det skal hentes fra:

SELECT users.*, cities.*

Alternativt kan du liste opp feltene vi trenger med angivelse av tabellnavn foran dem:

SELECT users.name, cities.name

Disse to måtene har et problem. Saken er at hvis feltene i tabellene har like navn, vil det i Python-listen oppstå en navnekonflikt og bare ett felt vinne, og det andre vil ikke være der.

For å løse problemet må du endre de konfliktfylte navnene via kommandoen as:

SELECT users.name, cities.name as city_name

Tilkobling

Etter kommandoen ON må vi spesifisere felter fra de to tabellene som utgjør tilkoblingen. I vårt tilfelle vil det være feltet id fra bytabellen og feltet city_id fra brukertabellen:

ON cities.id=users.city_id

Spørring

Til slutt vil spørringen som henter brukere sammen med byene deres se slik ut:

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

Praktiske oppgaver

Anta at du har en tabell med produkter og en tabell med deres kategorier. Skriv en spørring som henter produktnavnene sammen med kategoriene deres.

Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis