这是我的表格描述:
票务
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
如何从票证表中选择具有两个州名称的行?
答案 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查找。