⊗pyPmDOGD 123 of 129 menu

Преузимање података из повезаних табела у Пајтону

Хајде да направимо упит који ће преузети све кориснике заједно са њиховим градовима. За ово ће бити потребна команда LEFT JOIN:

Њен синтакс изгледа овако:

SELECT поља FROM име_табеле LEFT JOIN име_повезане_табеле ON услов_везе WHERE услов_селекције

Хајде да размотримо поједине делове синтаксе ове команде.

Поља

Пошто се селекција врши из више табела, селекција свих поља преко * неће функционисати. Следећи упит ће изабрати поља само из главне табеле, али не и из повезане:

SELECT *

Да би се подаци бирали из свих табела, потребно је пре * навести име табеле за селекцију:

SELECT users.*, cities.*

Или се могу навести поља која су нам потребна са навођењем имена табеле испред њих:

SELECT users.name, cities.name

Ова два начина имају проблем. Ствар је у томе што ако поља у табелама имају иста имена, у низу Пајтон ће доћи до конфликта имена и победиће само једно поље, а друго неће бити присутно.

За решавање проблема потребно је конфликтна имена преименовати преко команде as:

SELECT users.name, cities.name as city_name

Веза

После команде ON морамо навести поља из две табеле, по којима се остварује веза. У нашем случају то ће бити поље id из табеле са градовима и поље city_id из табеле са корисницима:

ON cities.id=users.city_id

Упит

На крају, упит који ће преузети кориснике заједно са њиховим градовима ће изгледати овако:

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

Практични задаци

Претпоставимо да имате табелу са производима и табелу са њиховим категоријама. Напишите упит, који ће преузети називе производа заједно са њиховим категоријама.

Српски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј