2017-06-03 14 views
0

私は私がする必要があるのは、リストevent_idhorse_id、場所とある2次の表SQLクエリ補正

表賞

enter image description here

テーブルエントリ

enter image description here

を持っています各エントリーの賞金。私は次のクエリを実行しましたが、私は正確な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; 

OUTPUT

enter image description here

+1

をお試しください** Prizemoney **は正確ではありませんなぜあなたは指定することはできますか?返される値について何がオフですか? –

+0

私はあなたが予想される成果の賞金額に到着したという論理を理解していません。 –

+0

PLACE 2のためのイベント0101の賞金は60であると思われますが、私の結果には120があります。 – user3382196

答えて

0

問題は、あなたのevent_idが同じのevent_idを持つ複数の行があるitself-によって真にユニークではないということです。あなたが実際に持っているように見えるのは、ユニークなエントリを定義する複合キー(event_idplace)です。したがって、event_idにのみ参加した場合、MySQLは返品する賞金の価値は不明です。例えば、event_id = 101の場合、返されるべき4つの異なる値(120, 60, 30, 10)があります。

編集: LEFTは両方event_idplaceに登録しよう:

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

オリジナルの答え:あなたの賞金テーブル(表賞)とのために、まだ主キー制約を作成していない場合は、あなたのテーブルエントリ、イベントID 101、1位は、独自のプライマリキー、イベントID 101、2位自身のプライマリキーなどを取得する必要があります。 Outputテーブルで正しい結果を返します。

+1

ありがとうございます非常にゆうチェン: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