日期:2014-05-16  浏览次数:20710 次

求高手解决,如何同时联合读取同一个表中的两个不同值,显示在一起
表sheng 为省市区表,结构如下: 
id,  fid,  name
1    0    四川省
2    1    成都市
3    2    青羊区
4    2    金牛区

fid指父级的ID

另一张表为客户表 client
id  shengid,shiid,quid, company
1    1            2          4     中国电信公司

如何联查时,能同时得到省市区与公司名?  不要告诉我改表结构
效果如:   四川省。成都市,金牛区,中国电信公司

------解决方案--------------------
IF exists(SELECT NAME FROM sys.objects AS o WHERE NAME = 'test')
DROP TABLE test
GO
CREATE TABLE test(id INT IDENTITY(1,1) , fid INT , NAME NVARCHAR(3))
GO
INSERT INTO test 
SELECT 0 , N'四川省' union all
SELECT 1 , N'成都市' union all
SELECT 2 , N'青羊区' union all
SELECT 2 , N'金牛区'

;WITH client(id ,shengid , shiid , quid , company) AS (
SELECT 1,1,2,4,N'中国电信公司')
--执行查询
SELECT a.id, c.name ,d.name ,e.name , company FROM client AS a  
INNER JOIN test AS c ON a.shengid = c.id
INNER JOIN test AS d ON a.shiid = d.id
INNER JOIN test AS e ON a.quid = e.id

--结果
id          name name name company
----------- ---- ---- ---- -------
1           四川省  成都市  金牛区  中国电信公司

(1 row(s) affected)