У меня есть две таблицы: CONFIRMATION & CONFIRMATION_PRESSзначения, разделенные запятыми в Select пункта в SQL
КОНФОРМАЦИОННЫЙ Таблица выглядит следующим:
ID_CONF | ID_LOT | QTY
1005 175 25
1006 175 24
1007 175 23
1008 176 50
CONFIRMATION_PRESS Таблица выглядит следующим образом:
ID_CONF | ID_PRESS
1005 11
1005 22
1005 33
1006 12
1006 13
1007 14
Теперь я хочу, чтобы все данные для ID _LOT = 175 из таблицы ПОДТВЕРЖДЕНИЕ, но мне нужно ID_PRESS в значении, разделенном запятыми.
Например, для ID_LOT 175, следующие результаты должны быть отображены:
ID CONF | ID_LOT | QTY | ID_PRESS
--------+--------+-----+----------
1005 175 25 11,22,33
1006 175 24 12,13
1007 175 23 14
Мой запрос выглядит следующим образом:
SELECT
C.ID_CONF,
C.QTY,
C.ID_LOT,
STUFF((
SELECT CAST(',' AS VARCHAR(MAX)) + CAST(CP.ID_PRESS AS VARCHAR(5))
FROM CONFIRMATION C,
CONFIRMATION_PRESS CP
WHERE
C.ID_CONF = CP.ID_CONF
FOR XML PATH('')), 1, 1, '') PRESS_CSV
FROM
CONFIRMATION C
WHERE
C.ID_LOT = 175
Но он возвращает этот вывод:
ID CONF | ID_LOT | QTY | ID_PRESS
--------+--------+-----+------------------
1005 175 25 11,22,33,12,13
1006 175 24 11,22,33,12,13
1007 175 23 11,22,33,12,13
Что я здесь делаю неправильно?
Просьба помочь!
С уважением!
[Вредные привычки пинать: использование старого стиля JOIN и] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick- using-old-style-joins.aspx) - стиль старого стиля * разделенный запятыми список таблиц * был заменен синтаксисом * proper * ANSI 'JOIN' в стандарте ANSI - ** 92 ** SQL (** более 20 лет ** назад), и его использование не рекомендуется –
Я написал этот запрос, например. Обычно я использую INNER JOIN/OUTER JOIN в моих запросах. Спасибо за обратную связь! –