Aynı tabloyla yapılan join'leri yönetmek için alias kullanma
Çoğu zaman, çalışanlar ve yine çalışan olan yöneticiler gibi hiyerarşik veriler içeren tabloların olur. Bu nedenle, bir tabloyu farklı sütunlar üzerinden kendisiyle birleştirmek isteyebilirsin. Tabloyu kopyalayan .alias() yöntemi, bu işi yapmana yardımcı olur. Aynı tablo söz konusu olduğundan, birleştirme koşulunu belirtmek için yalnızca bir where koşuluna ihtiyacın vardır.
Burada, herkesin kime raporladığını bulmak için employees tablosunu kendisiyle birleştiren bir sorgu oluşturmak üzere .alias() yöntemini kullanacaksın.
Bu egzersiz, kursun bir parçasıdır
Python ile Veritabanlarına Giriş
Egzersiz talimatları
employeestablosunun bir alias'ınımanagersolarak kaydet. Bunu yapmak içinemployeesüzerine.alias()yöntemini uygula.- Çalışanın
namedeğerini ve yöneticisininnamedeğerini seçecek bir sorgu oluştur. Yöneticininnamedeğeri senin için zaten seçildi.employeestablosununnamesütununu'employee'olarak etiketlemek içinlabelkullan. managerstablosununidsütununun,employeestablosununmgrsütununa karşılık geldiği durumları eşleştirmek içinstmtifadesine bir where koşulu ekle.- İfadeyi
managerstablosununnamesütununa göre sırala. - İfadeyi çalıştır ve tüm sonuçları sakla. Bu kod zaten yazıldı. Yöneticilerin ve tüm çalışanlarının adlarını yazdırmak için yanıtı gönder.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# 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)