⊗pyPmDOGD 123 of 129 menu

Získávání dat z propojených tabulek v Pythonu

Pojďme vytvořit dotaz, který načte všechny uživatele spolu s jejich městy. K tomu bude potřeba příkaz LEFT JOIN:

Jeho syntaxe vypadá následovně:

SELECT pole FROM název_tabulky LEFT JOIN název_propojené_tabulky ON podmínka_propojení WHERE podmínka_výběru

Pojďme rozebrat jednotlivé části syntaxe tohoto příkazu.

Pole

Protože se výběr provádí z několika tabulek, výběr všech polí pomocí * nebude fungovat. Následující dotaz vybere pole pouze z hlavní tabulky, ale ne z propojené:

SELECT *

Aby se data vybírala ze všech tabuliek, je třeba před * uvést název tabulky pro výběr:

SELECT users.*, cities.*

Nebo lze vypsat potřebná pole s uvedením názvu tabulky před nimi:

SELECT users.name, cities.name

Tyto dva způsoby mají problém. Spočívá v tom, že pokud mají pole v tabulkách stejné názvy, dojde v poli Pythonu ke konfliktu jmen a vyhraje pouze jedno pole, druhé nebude k dispozici.

K vyřešení problému je třeba konfliktní názvy přejmenovat pomocí příkazu as:

SELECT users.name, cities.name as city_name

Propojení

Po příkazu ON musíme uvést pole ze dvou tabulek, podle kterých se provádí propojení. V našem případě to bude pole id z tabulky s městy a pole city_id z tabulky s uživateli:

ON cities.id=users.city_id

Dotaz

Výsledný dotaz, který načte uživatele spolu s jejich městy, bude vypadat následovně:

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

Praktické úlohy

Předpokládejme, že máte tabulku s produkty a tabulku s jejich kategoriemi. Napište dotaz, který načte názvy produktů spolu s jejich kategoriemi.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικά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
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout