SQL Left加入自我

时间:2016-02-12 08:09:17

标签: mysql select join

我知道之前已经问过这个问题,我已经尝试过我在这里看过的技巧。但它只是不起作用。

我有一张人物表'看起来像这样

PersonID,PersonName,PersonYOB,PersonCOB,FatherID

devenv /Setup

我想做的是一个SELECT,其中父名来自父亲的PersonID。我也有母亲,但为了简单起见,我已将其删除。一旦我让父亲上班,我就会重新加入母亲。

我当前的SELECT看起来像这样

1    Fred Astaire    1963    USA    2
2    Bruce Astaire   1933    USA    NULL
3    Adele Astaire   1961    FR     2
4    Gene Kelly      1965    IT     NULL
5    Lucy Astaire    1935    USA    NULL

我的所有人都出现,但是FatherName始终为NULL。

弗雷德阿斯泰尔应该将父亲ID 2和f.PersonName显示为布鲁斯阿斯泰尔。阿黛尔阿斯泰尔(他的妹妹)也是如此。

我错过了什么?

2 个答案:

答案 0 :(得分:0)

这里你跟inner join一起去,因为你正试图加入这个桌子......

SELECT p.*, f.PersonName AS 'FatherName' FROM People p   //here is the p you forgot
    INNER JOIN People f ON
    p.PersonID = f.FatherID

答案 1 :(得分:0)

您的加入条件不正确。改变如下。

SELECT p.*, f.PersonName AS FatherName FROM People p
LEFT OUTER JOIN People f ON
p.FatherID= f.PersonID