SQL Server: concat или несколько запросов SELECT в gridview? - PullRequest
2 голосов
/ 23 января 2012

У меня есть таблица с информацией в базе данных SQL Server и другая таблица с информацией о группе, которую я хотел бы объединить в первую таблицу.

Например,

table1 :

1 | 'foo' | 'bar,baz'

и

table2 :

1 | 'bar'
1 | 'baz'

Я хочу заменить потребность в этом третьем столбце в таблице1, выполнивGROUP BY CONCAT с table2.Единственная проблема заключается в том, что после того, как я закончу разработку этого проекта, я осознаю, что мне нужно будет перенести SQL на Oracle, поэтому, возможно, лучше сделать отдельный SELECT для одного столбца gridview?

Спасибомного.

1 Ответ

1 голос
/ 23 января 2012

Простой MS SQL concat может быть выполнен с помощью преобразования нужных вам строк в XML и обратно в nvarchar. Пример: Представьте, что у вас есть 2 таблицы - одна для Контактов (с идентификатором PK) и вторая с ContactTypes (с ContactID в качестве FK, может иметь несколько строк для одного контакта). Вам нужно объединить все типы в 1 строку. Вот трюк, чтобы сделать это:

SELECT c.ContactID, CONVERT(VARCHAR(MAX), /* concatenate all Types to varchar */
(
                  SELECT ct.ContactTypeDescription+ ', '
                  FROM   ContactTypes ct
                  JOIN Contacts c1 ON  ct.ContactID = c1.ContactID 
                   FOR XML PATH('')
            )) AS ContactTypes, * 
            FROM Contacts c

Это должно сделать вывод следующим образом:

1 | Type1, Type2,  ... | ...
2 | Type3, Type10, ... | ...

и т.д.

Не знаю о порте Oracle, надеюсь, это поможет ...

...