ÎncepețiÎncepe gratuit

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

Vezi cursul

Instrucțiuni pentru exercițiu

  • Construiește o instrucțiune care să selecteze TOATE coloanele din tabelele census și state_fact. De exemplu, pentru a selecta toate coloanele din două tabele employees și sales, ai folosi stmt = select([employees, sales]).
  • Adaugă un select_from la stmt pentru a uni tabelul census cu tabelul state_fact prin coloana state din census și coloana name din tabelul state_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))
Editează și rulează codul