BaşlayınÜcretsiz başlayın

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ş

Kursa Göz Atın

Egzersiz talimatları

  • employees tablosunun bir alias'ını managers olarak kaydet. Bunu yapmak için employees üzerine .alias() yöntemini uygula.
  • Çalışanın name değerini ve yöneticisinin name değerini seçecek bir sorgu oluştur. Yöneticinin name değeri senin için zaten seçildi. employees tablosunun name sütununu 'employee' olarak etiketlemek için label kullan.
  • managers tablosunun id sütununun, employees tablosunun mgr sütununa karşılık geldiği durumları eşleştirmek için stmt ifadesine bir where koşulu ekle.
  • İfadeyi managers tablosunun name sü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)

Kodu Düzenle ve Çalıştır