Joinuri
Dacă nu selectezi coloane din ambele tabele sau dacă cele două tabele nu au o relație definită, poți folosi în continuare metoda .join() pe un tabel pentru a-l uni cu un alt tabel și a obține
date suplimentare relevante pentru interogarea ta. Metoda join() primește ca prim argument obiectul tabelului pe care vrei să-l unești și ca al doilea argument o condiție care
indică relația dintre tabele. În final,
folosești metoda .select_from() pe instrucțiunea select pentru a încapsula clauza de join.
De exemplu, în video, Jason a executat următorul cod pentru a uni tabelul census cu tabelul state_fact, astfel încât coloana state din tabelul census să corespundă coloanei name din tabelul state_fact.
stmt = stmt.select_from(
census.join(
state_fact, census.columns.state ==
state_fact.columns.name)
Acest exercițiu face parte din cursul
Introducere în baze de date în Python
Instrucțiuni pentru exercițiu
- Construiește o instrucțiune care să selecteze TOATE coloanele din tabelele
censusșistate_fact. De exemplu, pentru a selecta toate coloanele din două tabeleemployeesșisales, ai folosistmt = select([employees, sales]). - Adaugă un
select_fromlastmtpentru a uni tabelulcensuscu tabelulstate_factprin coloanastatedincensusși coloananamedin tabelulstate_fact. - Execută instrucțiunea pentru a obține primul rezultat și salvează-l ca
result. Acest cod este deja scris. - Trimite răspunsul pentru a parcurge cheile obiectului result și a afișa cheia și valoarea pentru fiecare!
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# Build a statement to select the census and state_fact tables: stmt
stmt = select([____, ____])
# Add a select_from clause that wraps a join for the census and state_fact
# tables where the census state column and state_fact name column match
stmt_join = stmt.select_from(
____(____, census.columns.____ == state_fact.columns.____))
# Execute the statement and get the first result: result
result = connection.execute(stmt_join).first()
# Loop over the keys in the result object and print the key and value
for key in result.keys():
print(key, getattr(result, key))