SQL卡在简单的左连接上

时间:2014-05-10 23:39:38

标签: mysql sql join left-join

我有一张客人表:

访客:guest_id,fname,lname,inviter_id。

部分客人受到桌上已有客人的邀请,因此他添加的访客将在inviter_id字段中显示邀请者guest_id。

所以,如果我是嘉宾,而我的guest_id是5,我邀请约翰,那么约翰的邀请函数为5。

现在我想制作一个SQL命令来获取所有的访客,但是当我返回时,我想要拥有它们的guest虚拟机的inviter_id,返回其邀请者的名字。

到目前为止,这是我的SQL(可行):

SELECT `inviter_id`, `fname`, `lname` FROM `guests` WHERE `event_id`=12 GROUP BY `guests`.`guest_id` ORDER BY `fname`

返回类似以下内容:

  

inviter_id - > 5,fname - > Ben,lname - > Paplak,inviter_id - > 26

我想让它归还:

  

inviter_id - > 5,fname - > Ben,lname - > Paplak,inviter_name - > 'John Doe'

我可以将inviter_id行的详细信息添加到这个sql中吗?

喜欢将此加入我当前的sql:

SELECT `fname`, `lname` FROM `guests` WHERE inviter_id=inviter_id

(对于每个具有与来宾匹配的inviter_id的行...)

谢谢!

1 个答案:

答案 0 :(得分:3)

是的,您可以使用来宾表的左连接:

SELECT
    g.guest_id,
    g.fname,
    g.lname,
    i.fname AS inviter_fname,
    i.lname AS inviter_lname
FROM
    guests g
LEFT JOIN
    guests i
ON
    g.inviter_id = i.guest_id

您需要别名,因为您两次引用同一个表。