用左连接完成对一个表中的多个外键字段替换查询返回名称

---------- 创建4个表结构,其中jobs表中的三个字段cityID、provinceID、countryID对应着其他3个表的主键

CREATE TABLE [dbo].[city] (
 [ID] [smallint] IDENTITY (1, 1) NOT NULL ,
 [cityName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[country] (
 [ID] [smallint] IDENTITY (1, 1) NOT NULL ,
 [countryName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[jobs] (
 [job_id] [smallint] IDENTITY (1, 1) NOT NULL ,
 [userName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
 [cityID] [int] NULL ,
 [provinceID] [int] NULL ,
 [countryID] [int] NULL ,
 [productName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[province] (
 [ID] [smallint] IDENTITY (1, 1) NOT NULL ,
 [provinceName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO

 

----查询jobs表中的三个外键对应的名称

---t1 get countryName
select job_id, userName, provinceID,countryName,ProductName
from jobs as t1 left  join country t2 on t2.id = t1.countryID

-- get countryName and provinceName
select job_id, userName, provinceName,countryName,ProductName
from (
 select job_id, userName, provinceID,countryName,ProductName
 from jobs as t1 left  join country t2 on t2.id = t1.countryID
     ) as t3 left join Province t4 on t3.provinceID = t4.ID


-- get all
select job_id, userName, cityName, provinceName,countryName,ProductName
from(
 select job_id, userName,cityID, provinceName,countryName,ProductName
 from (
  select job_id, userName,cityID, provinceID,countryName,ProductName
  from jobs as t1 left  join country t2 on t2.id = t1.countryID
      ) as t3 left join Province t4 on t3.provinceID = t4.ID
     )  as t5 left join city t6 on t5.cityID = t6.ID

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值