2014-02-11 46 views
0

我有三個表功能,COALESCE()的加入

  • 評論:ID,USER_ID,place_id,文字
  • 地方:ID,名稱
  • 用戶:身份證,名稱

我想顯示所有地方的清單,列出所有用戶在那個地方。

McDonalds Jill, Suzy, Bob 
Walmart Fred, Joe, Suzy, Larry 
Library Joe, Suzy 
... 

我試圖使用​​3210函數來實現這一點,但我遇到了麻煩。我究竟做錯了什麼?

SELECT places.name, COALESCE(users.name+",") 
FROM comments 
JOIN places 
ON comments.place_id = places.id 
WHERE user_id = users.id 
GROUP BY places.name 

謝謝。

+2

哪個RDBMS好嗎? 'COALESCE'返回第一個非空值。可能你正在考慮MySql的'GROUP_CONCAT'? – StuartLC

+0

使用SQL Server 2005 for Windows ...對於具有過時教科書的類 – broinjc

+0

查看[這裏](http://stackoverflow.com/a/5981860/314291)模擬SQL Server中的'GROUP_CONCAT'選項。例如使用'FOR XML PATH' +'STUFF' – StuartLC

回答

1

試試這個!

使用合併是不是與此有關,請嘗試使用STUFFXML PATH('')

SELECT t1.name, 
STUFF(
(
SELECT ',' + [places.name] FROM comments 
JOIN places 
ON comments.place_id = places.id 
WHERE user_id = users.id 
GROUP BY places.name 
for xml path('') 
),1,1,'') as t1 from table <group by>