多条记录 做为一条记录 读出
News表:
ID Title [Date]
1 'ABCDE' 2012-3-1
2 'ABC' 2012-3-1
Category表:
ID CategoryName
1 '类型1'
2 '类型2'
3 '类型3'
CatNew表:
ID NewsID CategoryID
1 1 1
2 1 2
3 2 3
4 2 1
取出数据:
1 'ABCDE' 2012-3-1 类型1_类型2
2 'ABC' 2012-3-1 类型3_类型1
怎么写SQL呢, 求救
[解决办法]
--CREATE TABLE News(ID INT, Title varchar(10), [Date] date)
--INSERT INTO News
--SELECT 1, 'ABCDE' ,'2012-3-1'
--UNION ALL
--SELECT 2, 'ABC' , '2012-3-1'
--create TABLE Category(ID INT , CategoryName VARCHAR(10))
--INSERT INTO Category
--SELECT 1, '类型1'
--UNION ALL
--SELECT 2 , '类型2'
--UNION ALL
--SELECT 3, '类型3'
--create TABLE CatNew(ID INT , NewsID INT , CategoryID INT )
--INSERT INTO CatNew
--SELECT 1 , 1 , 1
--UNION ALL
--SELECT 2 , 1 , 2
--UNION ALL
--SELECT 3 , 2 , 3
--UNION ALL
--SELECT 4 , 2 , 1
WITH huang AS (
SELECT a.id,a.title,a.[date],c.CategoryName
FROM news a
INNER JOIN catnew b ON a.id = b.newsid
INNER JOIN category c ON b.categoryid = c.id
)
SELECT a.id,a.title ,
stuff((select '_'+CategoryName from huang b
where b.id=a.id and b.id=a.id
for xml path('')),1,1,'') 'CategoryName'
FROM huang a
GROUP BY a.id,a.title
/*
id title CategoryName
----------- ---------- ----------------------------------------------------------------------------------------------------------------
1 ABCDE 类型1_类型2
2 ABC 类型1_类型3
(2 行受影响)
*/