2010-10-25 2 views
2

Используя SQL 2005, я пытаюсь запустить запрос в таблице Orders в моей базе данных. Каждый заказ может иметь несколько комментариев.Строки на уровне поля в запросе?

Я хочу получить запись одного заказа со всеми комментариями, собранными вместе в одном поле.

Вот psuedocode за то, что я пытаюсь сделать:

SELECT 
Orders.Name, 
Orders.Date, 
(SELECT Comment += Comment FROM OrderComments WHERE OrderComments.OrderId = Orders.OrderId) 
FROM Orders 

Я хочу заказа Комментарии закончить как поле в моем запросе, и быть в состоянии отделить получившиеся строки что-то вроде дату и запятую. Есть ли способ объединить полученные строки из подзапроса в одно поле?

Так что, если есть:

**Orders:** 
Order Id(int): 1 
Order Name(varchar): First Order 

**OrderComments:** 
OrderId(int): 1 
Comment(text): First order, yay 

OrderId(int): 1 
Comment(text): Just a random comment 

Я хочу закончить с рядом, как это (в данном случае разделителем запятой): «первого порядка», «10/25/2010», «Первый порядок, yay, просто случайный комментарий».

Благодарим за помощь!

+0

Какую версию SQL Server? 'И какие столбцы находятся в таблице ORDERCOMMENTS' - pls включают тип данных? –

ответ

1

Используется для XML:

SELECT 
Orders.Name, 
Orders.Date, 
(SELECT Comment +', ' FROM OrderComments WHERE OrderComments.OrderId = Orders.OrderId FOR XML PATH('')) 
FROM Orders 
+0

Отлично! Спасибо! – user53885

Смежные вопросы