MySQL Join显示多行具有相同的值

时间:2012-06-12 23:47:44

标签: php mysql

我正在尝试更好地学习MySQL select语句,并且我不知何故最终选择了具有相同值的多行。如果我删除了最后一个JOIN,则查询正确,但我仍然需要使用hourlyrates.Rate_Schedule_ID连接tasks.Rate_Schedule_ID,如上一个JOIN语句所示。

编辑: 每行重复一次。这是我得到的结果的图片。

enter image description here

 SELECT 
 project_timecard_tasks.Task_ID, 
 project_timecard_tasks.DateTime,
 project_timecard_tasks.Total_Hours,
 project_timecard_tasks.User_ID,
 project_timecard_tasks.Project_ID,
 users.User_ID,users.FirstName,
 users.LastName,
 tasks.id,
 tasks.taskName, 
 tasks.billingOption,
 tasks.fixedRate,
 tasks.Rate_Schedule_ID,
 hourlyrates.Rate_Schedule_ID,
 hourlyrates.hourlyRate

FROM 
 project_timecard_tasks 

JOIN users ON project_timecard_tasks.User_ID = users.User_ID 
JOIN tasks ON project_timecard_tasks.Task_ID = tasks.id 
JOIN hourlyrates ON tasks.Rate_Schedule_ID = hourlyrates.Rate_Schedule_ID

WHERE 
 project_timecard_tasks.Project_ID = '$jobNumber'

1 个答案:

答案 0 :(得分:1)

问题是您的结果(来自任务表)中有多行具有相同的Rate_Schedule_ID。这意味着对于每一个,您在每小时表中得到一个匹配,这为您提供每行两个匹配。

您可以将SELECT更改为SELECT DISTINCT,这将解决问题。但这可能表明您的数据存在更深层次的问题。

检查这是否真的是问题的方法是查看没有最后一次连接的结果集。如果有重复的Rate_Schedule_IDs,那就是它重复行的原因。

相关问题