⊗pyPmDOGD 123 of 129 menu

Hämta data från relaterade tabeller i Python

Låt oss skapa en förfrågan som hämtar alla användare tillsammans med deras städer. För detta behövs kommandot LEFT JOIN:

Dess syntax ser ut på följande sätt:

SELECT fält FROM tabellnamn LEFT JOIN relaterad_tabell ON villkor_för_relation WHERE villkor_för_urval

Låt oss gå igenom delarna av syntaxen för detta kommando.

Fält

Eftersom urvalet görs från flera tabeller, kommer urval av alla fält via * inte att fungera. Följande förfrågan väljer fält endast från huvudtabellen, men inte från den relaterade tabellen:

SELECT *

För att data ska hämtas från alla tabeller, måste man före * ange tabellnamnet för urvalet:

SELECT users.*, cities.*

Alternativt kan man lista de fält vi behöver med angivelse av tabellnamnet före dem:

SELECT users.name, cities.name

Dessa två sätt har ett problem. Saken är den att om fälten i tabellerna har samma namn, kommer en namngodskonflikt att uppstå i Python-arrayen och bara ett fält kommer att vinna, medan det andra inte kommer att finnas med.

För att lösa problemet måste man byta namn på de konfliktfyllda namnen via kommandot as:

SELECT users.name, cities.name as city_name

Relation

Efter kommandot ON måste vi ange fälten från de två tabellerna som relationen sker mellan. I vårt fall blir det fältet id från tabellen med städer och fältet city_id från tabellen med användare:

ON cities.id=users.city_id

Förfrågan

Så småningom kommer förfrågan som hämtar användare tillsammans med deras städer att se ut så här:

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

Praktiska uppgifter

Antag att du har en tabell med produkter och en tabell med deras kategorier. Skriv en förfrågan som hämtar produktnamnen tillsammans med deras kategorier.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa