Select select 子句中的子查询 select 中的多个值中的一个特定值

Select one specific value from several values in subquery select in select clause

我在 T-SQL.

有这个案例

TABLE 1 - 产品(id、名称、StartLocationId、FinalLocationId)。

StartLocationId 和 FinalLocationId 是 Location 的标识符。

Id Product    StartLocationId  FinalLocationId
1  Porsche    1                 2
2  Bentley    2                 3  
3  Maseratti  3                 1

TABLE 2 - 位置(身份证、姓名)

Id   Name
1    Garage Motor
2    Firestone
3    Michelin

我需要得到这些:

Product   NameStartLocation   NameFinalLocation
Porsche    Garage Motor        Firestone
Bentley    Firestone           Michelin
Maseratti  Michelin            Firestone  

我试过:

Select 
  Product.Name
 ,(select Location.Name 
   from Product inner join 
   Location ON Product.StartLocationId = Location.Id)
 ,(select Location.Name 
   from Product inner join 
   Location ON Product.FinalLocationId = Location.Id)
from Product

但是在子查询中不可能有多个值,而且我不能使用 top 和 order by 来获得所需的 table。

尝试像下面那样使用 join

select p.Product,ls.name as startlocation,
lf.name as finallocation
 from product p 
left join Location ls on p.StartLocationId=ls.id
left join Location lf on p.FinalLocationId=lf.id

你可以使用两个相关的子查询,你已经尝试过了,这样试试:

Select p.Name
 ,(select l.Name from Location l where l.Id = p.StartLocationId) as NameStartLocation
 ,(select l.Name from Location l where l.Id = p.FinalLocationId) as NameFinalLocation
from Product p