SQL查询更正

时间:2017-06-03 07:38:29

标签: mysql sql sql-server database

我有两张桌子

表奖

enter image description here

表条目

enter image description here

我需要做的就是为每个条目列出event_idhorse_id,地点和奖金。我执行了以下查询,但我没有得到准确的Prizemoney。

SELECT entry.event_id,entry.horse_id, entry.place, prize.prizemoney 


FROM entry


LEFT OUTER JOIN prize ON prize.event_code=entry.event_id
GROUP BY event_id, horse_id;

输出

enter image description here

2 个答案:

答案 0 :(得分:0)

问题是您的event_id本身并不是真正独特的 - 有多个行具有相同的event_id。您实际看到的是一个复合键(event_idplace)定义一个唯一条目。因此,当您仅在event_id加入时,MySQL不确定返回哪个奖金值。例如,对于event_id = 101,应返回四个不同的值(120, 60, 30, 10)。

修改: event_idplace上的LEFT JOIN:

LEFT OUTER JOIN prize ON prize.event_code=entry.event_id AND prize.place = entry.place

原始答案:如果您尚未为奖金表(表格奖励)和表格条目创建主键约束,则您需要这样做: 事件ID 101,第一名应获得自己的主键,事件ID 101,第二名其自己的主键等。然后加入主键以获取正确的导致输出表格。

答案 1 :(得分:0)

试试这个

select e.event_id, e.horse_id, e.place, p.prizemoney
  from entry e
left join prize p on p.event_code = e.event_id AND e.place = p.place