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

标签 php mysql

我正在尝试更好地学习 MySQL select 语句,但不知何故我最终选择了具有相同值的多行。如果我删除最后一个 JOIN,查询会正确显示,但我仍然需要将tasks.Rate_Schedule_ID 与hourlyrates.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'

最佳答案

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

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

检查这是否确实是问题的方法是查看没有最后一次连接的结果集。如果存在重复的 Rate_Schedule_ID,则这就是重复行的原因。

关于php - MySQL Join 显示具有相同值的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11006415/

相关文章:

mysql - 如果不存在则插入或如果存在则递增

php - 如何将新视频发布到我的网站

php - SQLSTATE[HY000] [2005] Laravel 中未知的 MySQL 服务器主机 ' ' (2)

php - MongoDB PHP 认证

mysql - 如何根据字段中的字符串位置确定 LIKE 查询选择的优先级?

php - Char_length 在 select 语句中不起作用

mysql - 使用左连接和排序时如何避免文件排序

php - Javascript - 在页面加载期间且仅在页面加载期间发生的 Onclick 事件

php - mysql一对多返回,分页处理

php - 如何通过ID查看数据是否已经输出到网站,避免重复