我有两个表STUDENT
和TaskEffort
。
许多学生从事过相同的工作。对于特定任务,应考虑学生的姓名和努力。
学生表包含studentid
,firstName
和lastName
。
TaskEffort表包含taskid
,studentid
和Effort
我需要为那些从事特定任务的人显示taskid,名字,姓氏,努力。
这是我尝试的其中一个查询,但这不起作用。
SELECT t.id, s.firstname, s.lastname, t.effort
FROM taskeffort t
LEFT OUTER JOIN student s ON t.id = 4 AND s.studentid = t.studentid
提前致谢。
答案 0 :(得分:1)
首先设计不准确。
你说“许多学生必须完成相同的任务”,但你的设计是
1个学生。这意味着每项任务只有一名学生。您需要更改设计以支持您的要求。
这种关系是多对多的。可以将学生分配给许多任务,并且可以将任务分配给许多学生。
添加名为taskAssignments
的第三个表格,其中包含student_id,task_id
列,并从student_id
中删除TaskEffort
列。
然后运行此查询:
SELECT t.id, s.firstname, s.lastname, t.effort
FROM TaskEffort t
LEFT JOIN taskAssignments ta ON t.id=ta.task_id
LEFT JOIN student s ON s.studentid = ta.studentid
WHERE t.id = 4
答案 1 :(得分:0)
SELECT t.id, s.firstname,s.lastname, t.effort
FROM taskeffort t
LEFT OUTER JOIN student s ON s.studentid = t.studentid
WHERE t.id = 4;