MySQL使用内部联接语法从两个表中检索数据
我的两张桌子是空的MySQL使用内部联接语法从两个表中检索数据,mysql,sql,Mysql,Sql,我的两张桌子是空的 Entry event_id competitor_id place 101 101 1 101 102 2 101 201 3 101 301 4 102 201 2 103 201 3 第二张表列出了为这些活动提供的奖品 Prize ev
Entry
event_id competitor_id place
101 101 1
101 102 2
101 201 3
101 301 4
102 201 2
103 201 3
第二张表列出了为这些活动提供的奖品
Prize
event_id place money
101 1 120
101 2 60
101 3 30
102 1 10
102 2 5
102 3 2
103 1 100
103 2 60
103 3 40
从这里,我期待着显示所有的信息从条目表连同金额的钱,他们赢得了他们尊敬的位置。如果他们未能放入货币,则将显示0
任何帮助都将不胜感激
SELECT * FROM Entry NATURAL LEFT JOIN Prize;
如果您绝对希望在未获奖的情况下为“金钱”获得0
而不是NULL
(但您如何区分0奖和无奖?):
两者都可以看到。试试这个:
SELECT a.Event_ID,
a.Competitor_ID,
a.Place,
COALESCE(b.money, 0) as `Money`
FROM entry a left join prize b
on (a.event_id = b.event_ID) AND
(a.place = b.Place)
希望这有帮助
EVENT_ID COMPETITOR_ID PLACE MONEY
101 101 1 120
101 102 2 60
101 201 3 30
101 301 4 0 -- << this is what you're looking for
102 201 2 5
103 201 3 40
活动\u ID竞争对手\u ID放置金钱
101 101 1 120
101 102 2 60
101 201 3 30
101 301 4 0--试试这个:
select e.*, coalesce(p.money, 0) money from entry e
left join prize p
on e.event_id = p.event_id and e.place = p.place
你可以玩小提琴。如果他们没能把钱放进去,标准是什么?例如,在本例中,在101项比赛中没有第四名的奖品记录。然后,第四名的零将显示为OP想要的。这看起来更像是要求的,如果我清楚地理解了他的问题,这将给出OP的答案。
select e.*, coalesce(p.money, 0) money from entry e
left join prize p
on e.event_id = p.event_id and e.place = p.place