2017-06-03 32 views
0

我有兩個下表SQL查詢修正

表獎

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

+1

您可以指定爲什麼** ** Prizemoney不準確?關於要返回的價值是什麼? –

+0

我不明白你在預期輸出中獲得獎金的邏輯。 –

+0

正如你所看到的PLACE 2的事件0101的獎金假設是60,但是我的結果是120。 – user3382196

回答

0

的問題是,你的event_id是不是itself-真正獨特的存在具有相同事項標識多行。你實際上看起來有一個組合鍵(event_idplace)定義了一個唯一的條目。所以當你只加入event_id時,MySQL並不確定獎金的回報價值。例如,對於event_id = 101,應該返回四個不同的值(120, 60, 30, 10)。

編輯: LEFT JOIN兩個event_idplace

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

原來的答覆:如果你還沒有爲您的獎金錶(表獎),並創建一個主鍵約束但你表條目,你需要這樣做:事件ID 101,第一名應該得到自己的主鍵,事件ID 101,第二名自己的主鍵等。然後加入主鍵得到正確的結果在你的輸出表中。

+1

非常感謝你Yu Chen:D – user3382196

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