⊗pyPmDOGD 123 of 129 menu

Hent data fra relaterede tabeller i Python

Lad os lave en forespørgsel, der henter alle brugere sammen med deres byer. Til dette kræves kommandoen LEFT JOIN:

Dens syntaks ser sådan ud:

SELECT felter FROM tabel_navn LEFT JOIN relateret_tabel_navn ON betingelse_for_relation WHERE betingelse_for_udvælgelse

Lad os gennemgå de enkelte dele af syntaksen for denne kommando.

Felter

Da der vælges data fra flere tabeller, vil udvælgelse af alle felter via * ikke virke. Følgende forespørgsel vil kun vælge felter fra hovedtabellen, men ikke fra den relaterede tabel:

SELECT *

For at data skal hentes fra alle tabeller, skal tabelnavnet angives før * for udvælgelsen:

SELECT users.*, cities.*

Alternativt kan de ønskede felter listes op med angivelse af tabelnavn før dem:

SELECT users.name, cities.name

Disse to metoder har et problem. Det er, at hvis felter i tabellerne har identiske navne, vil der i Python-arrayet opstå en navnekonflikt, og kun ét felt vil "vinde", og det andet vil ikke være til stede.

For at løse problemet skal de konfliktfyldte navne omdøbes via kommandoen as:

SELECT users.name, cities.name as city_name

Relation

Efter kommandoen ON skal vi angive felter fra de to tabeller, som relationen skaber mellem. I vores tilfælde vil det være feltet id fra by-tabellen og feltet city_id fra bruger-tabellen:

ON cities.id=users.city_id

Forespørgsel

I sidste ende vil forespørgslen, der henter brugerne sammen med deres byer, se sådan ud:

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

Praktiske opgaver

Antag, at du har en tabel med varer og en tabel med deres kategorier. Skriv en forespørgsel, som henter varenavnene sammen med deres kategorier.

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