To retrieve the desired result, you can use the following SQL statement:
sqlSELECT
u.USER_ID,
u.FIRST_NAME,
u.LAST_NAME,
u.EMAIL,
d.DEBATE_ID,
d.DEBATE_NAME
FROM
USER u
JOIN STUDENT s ON u.USER_ID = s.USER_ID
JOIN ENROLMENT e ON s.STUDENT_ID = e.STUDENT_ID
JOIN DEBATE d ON e.DEBATE_ID = d.DEBATE_ID
WHERE
u.USER_ID = {USER_ID}
AND d.DEBATE_ID IN ({DEBATE_IDS});
Replace {USER_ID}
with the actual USER_ID of the student, and {DEBATE_IDS}
with a comma-separated list of DEBATE_IDs for the debates the student is currently enrolled in.
This SQL statement uses INNER JOINs to connect the USER, STUDENT, ENROLMENT, and DEBATE tables based on their foreign keys. The WHERE clause filters the results to include only the specified USER_ID and DEBATE_IDs.
المزيد من المعلومات
للحصول على المزيد من المعلومات، يمكنك توسيع الاستعلام الخاص بك ليتضمن المزيد من الحقول أو الجداول. على سبيل المثال، يمكنك تضمين حقل المرتبة (RANK) لكل طالب في كل مناظرة بحيث يظهر ترتيبهم في كل مناظرة. الاستعلام الذي يضمن هذه المعلومات يمكن أن يكون كما يلي:
sqlSELECT
u.USER_ID,
u.FIRST_NAME,
u.LAST_NAME,
u.EMAIL,
d.DEBATE_ID,
d.DEBATE_NAME,
e.RANK
FROM
USER u
JOIN STUDENT s ON u.USER_ID = s.USER_ID
JOIN ENROLMENT e ON s.STUDENT_ID = e.STUDENT_ID
JOIN DEBATE d ON e.DEBATE_ID = d.DEBATE_ID
WHERE
u.USER_ID = {USER_ID}
AND d.DEBATE_ID IN ({DEBATE_IDS});
يقوم هذا الاستعلام بإضافة حقل RANK من الجدول ENROLMENT ليظهر ترتيب الطالب في كل مناظرة.