एक ही टेबल पर join के लिए alias का उपयोग
अक्सर आपके पास ऐसी टेबल्स होंगी जिनमें hierarchical डेटा होता है, जैसे कर्मचारी (employees) और मैनेजर, जो खुद भी कर्मचारी होते हैं। इसी कारण, आप किसी टेबल को अलग-अलग कॉलम्स पर खुद से ही join करना चाहेंगे। .alias() मेथड, जो किसी टेबल की एक कॉपी बनाता है, इस काम में मदद करता है। क्योंकि यह वही टेबल है, इसलिए आपको join कंडीशन बताने के लिए केवल एक where क्लॉज़ की जरूरत होती है.
यहाँ, आप .alias() मेथड का उपयोग करके एक क्वेरी बनाएँगे जो employees टेबल को उसी पर join करेगी ताकि पता चले कि कौन किसे रिपोर्ट करता है.
यह अभ्यास पाठ्यक्रम का हिस्सा है
Python में Databases का परिचय
अभ्यास निर्देश
employeesटेबल का एक alias बनाकर उसेmanagersनाम से सेव करें। ऐसा करने के लिएemployeesपर.alias()मेथड अप्लाई करें.- ऐसी क्वेरी बनाएँ जो कर्मचारी का
nameऔर उसके मैनेजर काnameसेलेक्ट करे। मैनेजर काnameआपके लिए पहले से सेलेक्ट किया हुआ है।labelका उपयोग करकेemployeesकेnameकॉलम को'employee'के रूप में लेबल करें. stmtमें एक where क्लॉज़ जोड़ें ताकिmanagersटेबल काidकॉलमemployeesटेबल केmgrकॉलम से मेल खाए.- स्टेटमेंट को
managersटेबल केnameकॉलम के अनुसार ऑर्डर करें. - स्टेटमेंट को execute करें और सभी रिज़ल्ट स्टोर करें। यह कोड पहले से लिखा हुआ है। मैनेजर और उनके सभी कर्मचारियों के नाम प्रिंट करने के लिए उत्तर सबमिट करें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
# 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)