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ë:
SELECT 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:
SELECT *
Që të dhënat të zgjidhen nga të gjitha
tabelat, duhet të përcaktohet emri i
tabelës përpara *:
SELECT users.*, cities.*
Ose mund të listohen fushat që na duhen me përcaktimin e emrit të tabelës përpara tyre:
SELECT 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:
SELECT 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:
ON 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ë:
SELECT
users.name, cities.name as city_name
FROM
users
LEFT JOIN cities ON cities.id=users.city_id
Detyra praktike
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.