⊗pyPmDOGD 123 of 129 menu

Získavanie údajov z prepojených tabuliek v Pythone

Urobme požiadavku, ktorá načíta všetkých používateľov spolu s ich mestami. Na to bude potrebný príkaz LEFT JOIN:

Jeho syntax vyzerá nasledovne:

SELECT polia FROM nazov_tabulky LEFT JOIN nazov_prepojenej_tabulky ON podmienka_prepojenia WHERE podmienka_vyberu

Poďme si rozobrať jednotlivé časti syntaxe tohto príkazu.

Polia

Pretože výber ide z viacerých tabuliek, výber všetkých polí cez * nebude fungovať. Nasledujúca požiadavka vyberie polia len z hlavnej tabuľky, ale nie z prepojenej:

SELECT *

Aby sa údaje vyberali zo všetkých tabuliek, je potrebné pred * uviesť názov tabuľky pre výber:

SELECT users.*, cities.*

Alebo je možné vymenovať potrebné polia s uvedením názvu tabuľky pred nimi:

SELECT users.name, cities.name

Tieto dva spôsoby majú problém. Spočíva v tom, že ak majú polia v tabuľkách rovnaké názvy, v poli Python dôjde ku konfliktu mien a vyhrá len jedno pole, a druhé nebude.

Na vyriešenie problému je potrebné konfliktné názvy premenovať pomocou príkazu as:

SELECT users.name, cities.name as city_name

Prepojenie

Po príkaze ON musíme uviesť polia z dvoch tabuliek, podľa ktorých sa uskutočňuje prepojenie. V našom prípade to bude pole id z tabuľky s mestami a pole city_id z tabuľky s používateľmi:

ON cities.id=users.city_id

Požiadavka

Výsledná požiadavka, ktorá načíta používateľov spolu s ich mestami bude vyzerať nasledovne:

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

Praktické úlohy

Nech existuje tabuľka s produktami a tabuľka s ich kategóriami. Napíšte požiadavku, ktorá načíta názvy produktov spolu s ich kategóriami.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť