MySQL 加入无效
MySQL join not working
我有以下查询。
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 和一些不同的字段更改。不明白为什么这会返回无效数据..
答案:使用聚合...
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
我有以下查询。
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 和一些不同的字段更改。不明白为什么这会返回无效数据..
答案:使用聚合...
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