MulaiMulai sekarang secara gratis

Menggunakan alias untuk menangani kueri join pada tabel yang sama

Sering kali, Anda memiliki tabel yang memuat data hierarkis, seperti karyawan dan manajer yang juga merupakan karyawan. Karena itu, Anda mungkin ingin melakukan join suatu tabel dengan dirinya sendiri pada kolom yang berbeda. Metode .alias(), yang membuat salinan sebuah tabel, membantu menyelesaikan tugas ini. Karena ini tabel yang sama, Anda hanya memerlukan klausa where untuk menentukan kondisi join.

Di sini, Anda akan menggunakan metode .alias() untuk membangun kueri yang melakukan join tabel employees dengan dirinya sendiri guna mengetahui setiap orang melapor kepada siapa.

Latihan ini adalah bagian dari kursus

Pengantar Basis Data di Python

Lihat Kursus

Petunjuk latihan

  • Simpan alias dari tabel employees sebagai managers. Untuk melakukannya, terapkan metode .alias() pada employees.
  • Bangun kueri untuk memilih name karyawan dan name manajernya. name manajer sudah dipilih untuk Anda. Gunakan label untuk memberi label kolom name dari employees sebagai 'employee'.
  • Tambahkan klausa where ke stmt untuk mencocokkan saat kolom id pada tabel managers bersesuaian dengan kolom mgr pada tabel employees.
  • Urutkan pernyataan berdasarkan kolom name dari tabel managers.
  • Eksekusi pernyataan dan simpan semua hasil. Kode ini sudah dituliskan. Kirim jawaban untuk mencetak nama para manajer dan seluruh karyawan mereka.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

# 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)

Edit dan Jalankan Kode