我正在尝试更好地学习 MySQL select 语句,但不知何故我最终选择了具有相同值的多行。如果我删除最后一个 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'
最佳答案
问题是结果(来自任务表)中有多个行具有相同的 Rate_Schedule_ID。这意味着对于其中的每一个,您都会在每小时费率表中获得一个匹配项,这为您提供了每行两个匹配项。
您可以将 SELECT 更改为 SELECT DISTINCT,这将解决该问题。但这可能表明您的数据中存在更深层次的问题。
检查这是否确实是问题的方法是查看没有最后一次连接的结果集。如果存在重复的 Rate_Schedule_ID,则这就是重复行的原因。
关于php - MySQL Join 显示具有相同值的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11006415/