การใช้ alias สำหรับคิวรีที่ join ตารางเดิมกับตัวเอง
บางครั้งตารางในฐานข้อมูลจะมีข้อมูลแบบลำดับชั้น เช่น ตารางพนักงานที่มีทั้งพนักงานทั่วไปและผู้จัดการ ซึ่งก็คือพนักงานเช่นกัน ในกรณีนี้ อาจจำเป็นต้อง join ตารางกับตัวเองในคอลัมน์ที่ต่างกัน เมธอด .alias() ช่วยสร้างสำเนาของตารางเพื่อให้ทำสิ่งนี้ได้ และเนื่องจากเป็นตารางเดียวกัน จึงใช้เพียง where clause ในการระบุเงื่อนไขการ join
ในแบบฝึกหัดนี้ จะได้ใช้เมธอด .alias() เพื่อสร้างคิวรีที่ join ตาราง employees กับตัวเอง เพื่อดูว่าแต่ละคนรายงานตรงต่อใคร
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Python เบื้องต้นสำหรับฐานข้อมูล
คำแนะนำการฝึกหัด
- บันทึก alias ของตาราง
employeesในชื่อmanagersโดยเรียกเมธอด.alias()กับemployees - สร้างคิวรีเพื่อเลือกชื่อของพนักงานและชื่อของผู้จัดการ ซึ่งชื่อผู้จัดการถูกเลือกไว้ให้แล้ว ให้ใช้
labelกำหนดชื่อคอลัมน์nameของemployeesเป็น'employee' - เพิ่ม where clause ให้กับ
stmtเพื่อจับคู่กรณีที่คอลัมน์idของตารางmanagersตรงกับคอลัมน์mgrของตารางemployees - เรียงลำดับผลลัพธ์ตามคอลัมน์
nameของตารางmanagers - รันคำสั่งและเก็บผลลัพธ์ทั้งหมด ซึ่งโค้ดส่วนนี้เขียนไว้ให้แล้ว จากนั้นกด ส่งคำตอบ เพื่อแสดงชื่อของผู้จัดการและพนักงานทุกคนในสังกัด
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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)