⊗pyPmDOGD 123 of 129 menu

Obținerea datelor din tabele relaționate în Python

Să facem o interogare care va extrage toți utilizatorii împreună cu orașele lor. Pentru aceasta va fi necesară comanda LEFT JOIN:

Sintaxa sa arată în felul următor:

SELECT câmpuri FROM nume_tabel LEFT JOIN nume_tabel_relaționat ON condiția_legăturii WHERE condiția_selecției

Să analizăm părțile individuale ale sintaxei acestei comenzi.

Câmpurile

Deoarece selecția se face din mai multe tabele, selectarea tuturor câmpurilor prin * nu va funcționa. Următoarea interogare va selecta câmpurile doar din tabelul principal, dar nu și din tabelul relaționat:

SELECT *

Pentru ca datele să fie selectate din toate tabelele, este necesar să se indice înainte de * numele tabelului pentru selecție:

SELECT users.*, cities.*

Sau se pot enumera câmpurile de care avem nevoie cu indicarea numelui tabelului înaintea lor:

SELECT users.name, cities.name

Aceste două metode au o problemă. Ideea este că dacă câmpurile din tabele au aceleași nume, atunci în array-ul Python va apărea un conflict de nume și va câștiga doar un câmp, iar al doilea nu va exista.

Pentru a rezolva problema, este necesar să se redenumească numele conflictuale prin comanda as:

SELECT users.name, cities.name as city_name

Legătura

După comanda ON trebuie să indicăm câmpurile din cele două tabele, prin care se realizează legătura. În cazul nostru, acestea vor fi câmpul id din tabela cu orașe și câmpul city_id din tabela cu utilizatori:

ON cities.id=users.city_id

Interogarea

În final, interogarea care va extrage utilizatorii împreună cu orașele lor va arăta în felul următor:

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

Probleme practice

Să presupunem că aveți o tabelă cu produse și o tabelă cu categoriile lor. Scrieți o interogare, care va extrage denumirile produselor împreună cu categoriile lor.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge