Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL使用内部联接语法从两个表中检索数据_Mysql_Sql - Fatal编程技术网

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