Utilizarea aliasurilor pentru interogări cu același tabel îmbinат
De multe ori vei întâlni tabele care conțin date ierarhice, cum ar fi angajații
și managerii care sunt tot angajați. Din acest motiv, poate fi necesar să îmbini un tabel cu el însuși pe coloane diferite. Metoda .alias(), care creează o copie a unui tabel, te ajută să realizezi
acest lucru. Deoarece este același tabel, ai nevoie doar de o clauză where pentru a specifica
condiția de îmbinare.
Aici, vei folosi metoda .alias() pentru a construi o interogare care să îmbine
tabelul employees cu el însuși, pentru a determina cui îi raportează fiecare angajat.
Acest exercițiu face parte din cursul
Introducere în baze de date în Python
Instrucțiuni pentru exercițiu
- Salvează un alias al tabelului
employeescamanagers. Pentru aceasta, aplică metoda.alias()peemployees. - Construiește o interogare pentru a selecta numele angajatului și numele managerului său. Numele managerului a fost deja selectat. Folosește
labelpentru a redenumi coloananamedinemployeesca'employee'. - Adaugă o clauză where la
stmtpentru a face corespondența dintre coloanaiddin tabelulmanagersși coloanamgrdin tabelulemployees. - Ordonează instrucțiunea după coloana
namedin tabelulmanagers. - Execută instrucțiunea și stochează toate rezultatele. Acest cod este deja scris. Trimite răspunsul pentru a afișa numele managerilor și ale tuturor angajaților lor.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# Make an alias of the employees table: managers
managers = ____
# Build a query to select names of managers and their employees: stmt
stmt = select(
[managers.columns.name.label('manager'),
____]
)
# Match managers id with employees mgr: stmt_matched
stmt_matched = stmt.where(managers.columns.id == ____)
# Order the statement by the managers name: stmt_ordered
stmt_ordered = stmt_matched.order_by(____)
# Execute statement: results
results = connection.execute(stmt_ordered).fetchall()
# Print records
for record in results:
print(record)