Если бы я запросил нашу таблицу ORDERS, я мог бы ввести следующее:
SELECT * FROM ORDERS
WHERE ITEM_NAME = 'Fancy Pants'
В результатах этого запроса я мог бы получить следующее:
----------------------------------------------------------------------
ORDER_ID WAIST First_Name Email
----------------------------------------------------------------------
001 32 Jason j-diddy[at]some-thing.com
005 28 Pip pirrip[at]british-mail.com
007 28 HAL9000 olhal[at]hot-mail.com
Теперь я также хочу получить информацию из другой таблицы:
ВЫБРАТЬ * ИЗ ПРОДУКТОВ
WHERE ITEM_NAME = 'Необычные штаны'
------------------------------------------
PRODUCT_ID Product Prod_Desc
------------------------------------------
008 Fancy Pants Really fancy.
Однако, в конце концов, я хочу сжать эти записи в одну строку с помощью SQL-запроса:
-----------------------------------------------------------------------------
PRODUCT ORDER_Merged First_Name_Merged Email_Merged
-----------------------------------------------------------------------------
Fancy Pants 001,005,007 Jason,Pip,Hal9000 j-di[...].com, pirrip[...].com
Во всяком случае, так это будет выглядеть. Я не могу понять, как будет выглядеть этот запрос «слияния».
Мои поиски, к сожалению, продолжают приводить меня к результатам для PHP. Я нашел несколько результатов: слияние в строки CSV через SQL , но я не думаю, что они будут работать в моем сценарии.
Любое понимание, как всегда, будет высоко оценено.
UPDATE:
Ах, оказывается, функции STUFF
и FOR XML
были именно тем, что мне нужно . Спасибо всем !!
Select
A.name,
stuff((
select ',' + B.address
from Addresses B
WHERE A.id=B.name_id
for xml path('')),1,1,'')
From Names A