2015-02-08 4 views
0

Я хочу добавить несколько UCId в одном столбце SQL Server. Я использую Stuff, но в результате отображается все идентификатор UC вместо условия.Хотите добавить несколько значений в столбец таблицы SQL, разделенных запятой,

Таблица:

UCId UCPre       UCPost       UCNext (No column name) 
----------------------------------------------------------------------------------------------- 
UC01 User must be Registerd   User is Loggined sucessfully UC02 UC03,UC05,UC02 
UC02 User is Loggined sucessfully User is added     UC03 UC03,UC05,UC02 
UC03 File must be selected   File is added     NULL UC03,UC05,UC02 
UC04 File is added     File is deleted     NULL UC03,UC05,UC02 
UC05 User is Loggined sucessfully User is deleted     NULL UC03,UC05,UC02 

Я использую следующий запрос:

SELECT 
    b.*, 
    STUFF(
      (SELECT ',' + a.UCId 
      FROM UCDetails a, test b 
      WHERE (b.UCPost = a.UCPre) 
      FOR XML PATH ('')),1,1,'') 
FROM 
    test b 
JOIN 
    UCDetails a ON b.UCPost = a.UCPre 

Что я хочу:

Я хочу, чтобы в UCNext колонке UC01 Идентификатор UC02 и UC05, разделенных запятыми (UC02,UC05), поскольку UCPost UC01 соответствует UCPre UC02 и UC05.

+0

Для данных, не могли бы вы указать, какие именно значения столбцов должны быть для каждого 'UCid'? – gotqn

+0

Дорогой для UC01 значения UCId в UCNext будут UC02 и UC05 –

+1

[Плохие привычки пинать: использование JOIN в старом стиле] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad -habits-to-kick-using-old-style-joins.aspx) - этот стиль таблиц * в стиле старого стиля * с запятой был заменен на синтаксис * надлежащего * ANSI 'JOIN' в ANSI - ** 92 ** Стандарт SQL (** более 20 лет ** назад), и его использование не рекомендуется –

ответ

0

Создайте третью таблицу, возможно, под названием NextUCId с двумя колонками:

UCID и UCNext

То же UCID будет перечислен один раз для каждого NextUCId, как это:

UCId | UCNext 
UC01 | UC02 
UC01 | UC03 

Тогда вы можете сделайте соединение в этой третьей таблице, чтобы получить идентификаторы UCNext, необходимые для UCId, примерно так:

SELECT  uc.UCId, 
      nuc.UCNext 
FROM  UCId uc 
INNER JOIN NextUCId nuc ON (uc.UCId = nuc.UCNext) 
ORDER BY nuc.UCNext ASC 
+0

Дорогой спасибо, но я должны вводить UCId в столбце UCNext на основе UCPost и UCPre –

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