Marrja e të Dhënave nga Tabela të Lidhura në Python

Le të bëjmë një kërkesë që do të marrë të gjithë përdoruesit së bashku me qytetet e tyre. Për këtë do të nevojitet komanda LEFT JOIN:

Sintaksa e saj duket si më poshtë:

sqlSELECT fushat FROM emri_i_tabeles
  LEFT JOIN emri_i_tabeles_te_lidhur ON kushti_i_lidhjes
WHERE kushti_i_perzgjedhjes

Le të shqyrtojmë pjesët individuale të sintaksës së kësaj komande.

Fushat

Meqenëse përzgjedhja bëhet nga disa tabela, përzgjedhja e të gjitha fushave përmes * nuk do të funksionojë. Kërkesa e mëposhtme do të zgjedhë fushat vetëm nga tabela kryesore, por jo nga tabela e lidhur:

sqlSELECT *

Që të dhënat të zgjidhen nga të gjitha tabelat, duhet të përcaktohet emri i tabelës përpara *:

sqlSELECT users.*, cities.*

Ose mund të listohen fushat që na duhen me përcaktimin e emrit të tabelës përpara tyre:

sqlSELECT users.name, cities.name

Këto dy mënyra kanë një problem. Çështja është se nëse fushat në tabela kanë emra të njëjtë, atëherë në vargun Python do të ketë një konflikt emrash dhe do të fitojë vetëm një fushë, e dyta nuk do të jetë.

Për të zgjidhur problemin, emrat në konflikt duhet të riemërtohen përmes komandës as:

sqlSELECT users.name, cities.name as city_name

Lidhja

Pas komandës ON duhet të specifikojmë fushat nga dy tabelat, përmes të cilave bëhet lidhja. Në rastin tonë, kjo do të jetë fusha id nga tabela me qytete dhe fusha city_id nga tabela me përdorues:

sqlON cities.id=users.city_id

Kërkesa

Si rezultat, kërkesa që do të marrë përdoruesit së bashku me qytetet e tyre do të duket si më poshtë:

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

Detyra praktike

Задание 1

Supozoni se keni një tabelë me produkte dhe një tabelë me kategoritë e tyre. Shkruani një kërkesë që merr emrat e produkteve së bashku me kategoritë e tyre.