У меня есть несколько таблиц с внешним ключом из основной таблицы. Таблицы, как это:Как объединить несколько строк из нескольких таблиц Эффективно
Сестры
MainID IDNO ....
111111 1 ....
111111 1 ....
111111 1 ....
222222 1 ....
111111 2 ....
Братья
MainID IDNO ....
111111 555 ....
111111 333 ....
111111 111 ....
222222 222 ....
111111 321 ....
Дяди
MainID IDNO ....
111111 561 ....
111111 121 ....
111111 331 ....
222222 451 ....
111111 672 ....
Мне нужно Concat Enate все IDNo
s в, но я не могу показаться, чтобы получить все, как, например, может быть, я не могу получить 672
SELECT
',' + S1.IDNo + ',' + B1.IDNo + ',' + U1.IDNo AS [text()]
FROM
Sisters S1, Brothers B1, Uncles U1, MainTable
WHERE
D1.MainID = MainTable.ID
AND S1.MainID = MainTable.ID
AND B1.MainID = MainTable.ID
FOR XML PATH('')
Я попытался отделить столы и concanate позже, но это становится гораздо медленнее, что путь. Что я могу сделать?
Ожидаемый результат:
,1,1,1,1,2,555,333,111,222,321,561,121,331,451,672
FYI : maintable имеет около 200 000 записей, а подтаблицы имеют около 600 000 каждый. – jackjop
[Плохие привычки пинать: использование 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 Standard (** более 20 лет ** назад) и его использование обескуражено –
@marc_s Я использовал соединения слишком быстро, не слишком много, – jackjop