1

我正在尝试更好地学习 MySQL 选择语句,但我最终以某种方式选择了具有相同值的多行。如果我删除最后一个 JOIN,查询会正确显示,但我仍然需要将 tasks.Rate_Schedule_ID 与 hourlyrates.Rate_Schedule_ID 连接起来,如最后一个 JOIN 语句所示。

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

在此处输入图像描述

 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'
4

1 回答 1

2

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

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

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

于 2012-06-13T00:02:22.990 回答