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
我在 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