从列到表的多个外键

时间:2013-12-29 20:42:55

标签: sql

这是我的表格描述:

票务

Id                      int    pk
ShowTicketStateID_FK    int
TicketStateID_FK        int

TicketState

Id                      int
Name                    int

实际上,TicketState有两个外键到Ticket表。

以下是Ticket表中的一些行:

1    1    1
2    2    1
3    1    2
...

这是TicketState

的行
1   'sold'
2   'reserved'

现在我想要这个结果集:

1    sold      sold
2    reserved  sold
3    sold      reserved

如何从票证表中选择具有两个州名称的行?

1 个答案:

答案 0 :(得分:1)

SELECT T.ID, S1.Name AS ShowState, S2.Name AS TicketState
  FROM Ticket AS T
  JOIN TicketState AS S1 ON T1.ShowTicketStateID = S1.ID
  JOIN TicketState AS S2 ON T1.TicketStateID     = S2.ID

关键概念是在单个查询中为TicketState表使用两个不同的表别名。该表必须扫描两次(松散地说),一次用于ShowTicketStateID查找,一次用于TicketStateID查找。