Joiny
Pokud nevybíráš sloupce z obou tabulek nebo mezi nimi není definovaný vztah, můžeš přesto použít metodu .join() na tabulce a spojit ji s jinou tabulkou, aby ses dostal/a k dalším datům souvisejícím s tvým dotazem. Metoda join() přijímá jako první argument objekt tabulky, kterou chceš připojit, a jako druhý argument podmínku určující, jak spolu tabulky souvisí. Výsledný join pak zabalíš pomocí metody .select_from() volanou na příkazu select. Například ve videu Jason spustil následující kód pro spojení tabulky census s tabulkou state_fact tak, aby sloupec state v tabulce census odpovídal sloupci name v tabulce state_fact.
stmt = stmt.select_from(
census.join(
state_fact, census.columns.state ==
state_fact.columns.name)
Toto cvičení je součástí kurzu
Introduction to Databases in Python
Pokyny k cvičení
- Sestav příkaz, který vybere VŠECHNY sloupce z tabulek
censusastate_fact. Pokud bys chtěl/a vybrat VŠECHNY sloupce ze dvou tabulekemployeesasales, použil/a bys napříkladstmt = select([employees, sales]). - Přidej k
stmtklauzuliselect_from, která spojí tabulkucensuss tabulkoustate_fact— podle sloupcestatev tabulcecensusa sloupcenamev tabulcestate_fact. - Spusť příkaz, získej první výsledek a ulož ho jako
result. Tento kód je už napsaný. - Odešli odpověď, aby se prošly klíče objektu result a vytiskl se každý klíč i jeho hodnota!
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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))