MySQL加入不起作用

时间:2016-07-06 20:27:05

标签: php mysql join left-join

我有以下查询。

SELECT DISTINCT tbl_event_entries.race_nbr,
                tbl_event_entries.class_id,
                tbl_event_entries.racer_id,
                tbl_event_entries.heat_position,
                tbl_event_classes.combine
FROM tbl_event_entries
LEFT JOIN tbl_event_classes
ON tbl_event_entries.class_id = tbl_event_classes.class_id
WHERE tbl_event_entries.event_id = :event_id
ORDER BY tbl_event_entries.race_nbr, tbl_event_entries.heat_position

此查询中的数据是:

event_class_id     event_id                     class_id    combine
822                20160706MAS577d098260173     1           2
823                20160706MAS577d098260173     2           8888


entry_id    event_id                    racer_id  class_id  
8318        20160706MAS577d098260173    238       1 
8319        20160706MAS577d098260173    1184      2 

我从此查询中获得的输出:

race_nbr class_id racer_id  heat_position combine
1        1        238       1             2
1        1        238       1             NULL
2        2        1184      1             8888 
2        2        1184      1             NULL

我可以将查询限制为不显示" NULL"结合起来,但我并不总是在那个领域有数据。但是,我永远不应该看到像这样重复的行。

我应该看到两行:

race_nbr class_id racer_id  heat_position combine
1        1        238       1             2
2        2        1184      1             8888 

有人能看到错误吗?

我尝试过LEFT JOIN,JOIN以及字段的一些不同更改。没看到为什么这会返回无效数据..

1 个答案:

答案 0 :(得分:1)

答案:使用汇总......

SELECT e.race_nbr
     , e.class_id
     , e.racer_id
     , e.heat_position
     , MAX(c.combine) combine
  FROM tbl_event_entries e
  LEFT 
  JOIN tbl_event_classes c
    ON c.class_id = e.class_id 
 WHERE e.event_id = :event_id
 GROUP
    BY e.race_nbr
     , e.class_id
     , e.racer_id
     , e.heat_position
 ORDER 
    BY e.race_nbr
     , e.heat_position