需要通过连接两个表来显示记录,并且记录应该是唯一的

时间:2015-09-21 09:14:02

标签: mysql sql

我有两个表STUDENTTaskEffort

许多学生从事过相同的工作。对于特定任务,应考虑学生的姓名和努力。

学生表包含studentidfirstNamelastName

TaskEffort表包含taskidstudentidEffort

我需要为那些从事特定任务的人显示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

提前致谢。

2 个答案:

答案 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;