我正在尝试更好地学习MySQL select语句,并且我不知何故最终选择了具有相同值的多行。如果我删除了最后一个JOIN,则查询正确,但我仍然需要使用hourlyrates.Rate_Schedule_ID连接tasks.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'
答案 0 :(得分:1)
问题是您的结果(来自任务表)中有多行具有相同的Rate_Schedule_ID。这意味着对于每一个,您在每小时表中得到一个匹配,这为您提供每行两个匹配。
您可以将SELECT更改为SELECT DISTINCT,这将解决问题。但这可能表明您的数据存在更深层次的问题。
检查这是否真的是问题的方法是查看没有最后一次连接的结果集。如果有重复的Rate_Schedule_IDs,那就是它重复行的原因。