⊗pyPmDOGD 123 of 129 menu

Datu iegūšana no saistītajām tabulām Python

Veiksim vaicājumu, kas iegūs visus lietotājus kopā ar viņu pilsētām. Šim nolūkam būs nepieciešama komanda LEFT JOIN:

Tās sintakse izskatās šādi:

SELECT lauki FROM tabulas_nosaukums LEFT JOIN saistitas_tabulas_nosaukums ON savienojuma_nosacijums WHERE atlases_nosacijums

Izpētīsim atsevišķas šīs komandas sintakses daļas.

Lauki

Tā kā atlase notiek no vairākām tabulām, tad visu lauku atlase caur * nedarbosies. Šāds vaicājums atlasīs laukus tikai no galvenās tabulas, bet ne no saistītās:

SELECT *

Lai dati tiktu atlasīti no visām tabulām, ir jānorāda tabulas nosaukums pirms *:

SELECT users.*, cities.*

Vai arī var uzskaitīt mums vajadzīgos laukus ar tabulas nosaukuma norādi pirms tiem:

SELECT users.name, cities.name

Šīm divām metodēm ir problēma. Tas ir tāpēc, ka, ja lauki tabulās ir ar identiskiem nosaukumiem, tad Python masīvā notiks nosaukumu konflikts un uzvarēs tikai viens lauks, bet otrā nebūs.

Lai atrisinātu problēmu, konfliktējošos nosaukumus vajag pārdēvēt, izmantojot komandu as:

SELECT users.name, cities.name as city_name

Saite

Pēc komandas ON mums jānorāda lauki no divām tabulām, pēc kuriem tiek realizēts savienojums. Mūsu gadījumā tas būs lauks id no tabulas ar pilsētām un lauks city_id no tabulas ar lietotājiem:

ON cities.id=users.city_id

Vaicājums

Rezultātā vaicājums, kas iegūs lietotājus kopā ar viņu pilsētām izskatīsies šādi:

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

Praktiskie uzdevumi

Pieņemsim, ka jums ir tabula ar precēm un tabila ar to kategorijām. Uzrakstiet vaicājumu, kas iegūs preču nosaukumus kopā ar to kategorijām.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt