---------- 创建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