เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การใช้ 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)

แก้ไขและรันโค้ด