我有一个填充listview的sql语句。我的一个联接表有多个记录,我想进入相同的列表视图记录,而不是连接表中每个项目的单独记录。例如,目前,我在列表视图中返回了7条记录或行,并带有以下数据。但是我只想要返回6条记录,将具有相同topicId的照片分组到同一条记录中。
从主题LEFT OUTER JOIN照片中选择* Topic.TopicId = Photos.TopicId
如果我选择*从主题LEFT OUTER JOIN照片上Topic.TopicId = Photos.TopicId和Topic.PhotoId = Photos.PhotoId,那么我只得到第一张照片。
我想要返回6行:第1行有3张照片,第2行第3行没有照片,第4行有3张照片,第5行没有照片,第6行有1张照片。
topic table
topicId topic photoId
1 abc 1
2 def null
3 ghi null
4 jkl 4
5 mno null
6 pqr 7
然后是照片
photos table
photoid topicId photoname
1 1 bla
2 1 bla
3 1 bla
4 4 bla
5 4 bla
6 4 bla
7 6 bla
答案 0 :(得分:0)
您对数据的外观有点不清楚,但您可以使用一些XML技巧一次性返回多张照片的photoid
;
SELECT topic.topicid, topic.topic,
STUFF((SELECT ',' + CAST(photoid AS VARCHAR)
FROM photos
WHERE photos.topicid=topic.topicid
FOR XML PATH ('')), 1, 1, '') photos
FROM topic