您的位置:首页 > 其它

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

2011-04-18 23:12 387 查看
---------- 创建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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐