⊗pyPmDOGD 123 of 129 menu

Dohvatanje podataka iz povezanih tabela u Python-u

Hajde da napravimo upit koji će izvući sve korisnike zajedno sa njihovim gradovima. Za ovo će biti potrebna komanda LEFT JOIN:

Njen sintaksis izgleda na sledeći način:

SELECT polja FROM ime_tabele LEFT JOIN ime_povezane_tabele ON uslov_povezivanja WHERE uslov_izbora

Hajde da raščlanimo pojedinačne delove sintaksisa ove komande.

Polja

Pošto se izbor vrši iz nekoliko tabela, izbor svih polja preko * neće raditi. Sledeći upit će izabrati polja samo iz glavne tabele, ali ne iz povezane:

SELECT *

Da bi podaci bili izabrani iz svih tabela, potrebno je pre * navesti ime tabele za izbor:

SELECT users.*, cities.*

Ili možete nabrojati potrebna polja sa navedenim imenom tabele ispred njih:

SELECT users.name, cities.name

Ova dva načina imaju problem. Stvar je u tome da ako polja u tabelama imaju ista imena, onda će u nizu Python-a doći do konflikta imena i pobediće samo jedno polje, a drugog neće biti.

Za rešenje problema je potrebno konfliktnim imenima promeniti imena preko komande as:

SELECT users.name, cities.name as city_name

Povezivanje

Nakon komande ON moramo navesti polja iz dve tabele po kojima se ostvaruje veza. U našem slučaju to će biti polje id iz tabele sa gradovima i polje city_id iz tabele sa korisnicima:

ON cities.id=users.city_id

Upit

Na kraju, upit koji će izvući korisnike zajedno sa njihovim gradovima će izgledati na sledeći način:

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

Praktični zadaci

Neka postoji tabela sa proizvodima i tabela sa njihovim kategorijama. Napišite upit, koji će izvući nazive proizvoda zajedno sa njihovim kategorijama.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij