[英]MySQL Retrieving data from two tables using inner join syntax
我的兩個桌子是
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 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
SELECT * FROM Entry NATURAL LEFT JOIN Prize;
如果在沒有贏得任何獎金的情況下,如果您絕對希望“金錢”為0
而不是NULL
(但是如何區分0的獎金和沒有的獎金?):
SELECT Entry.*, COALESCE(money, 0) AS money FROM Entry NATURAL LEFT JOIN Prize;
在sqlfiddle上都可以看到它們。
嘗試這個:
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
你可以在這里玩小提琴。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.