0

重複の可能性:行の値を連結する T-SQL

私は3つのテーブルを持っています。Items, Organizations & Items_Organizations ジャンクション テーブルは、他の 2 つの間に多対多の関係を提供します。

Items テーブルには、各項目のジャンクション テーブルから受け取った値を格納する列「組織」が含まれています。各組織をカンマなどで結合します。

私が読んだ限りでは、列に複数の値を保存することはベストプラクティスではありませんが、フロントエンドの各項目の組織をハンドラーを介して表示する必要があり、複数の値を1つに保存するよりも良いアイデアは思いつきませんでした桁。

バックエンドでやろうとしているのは、そのようなものを使用して「組織」列の情報を更新することです。

特定の品目の受入組織:

SELECT OrganizationName FROM organizations
JOIN organizations ON organizations.organizationID =
Items_Organizations.organizationID 
WHERE Items_Organizations.item_ID = '1'

UPDATEを使用して上記のクエリの結果テーブルを使用して、列「組織」を更新しようとしています

UPDATE items SET organizations = ?

質問を定式化するのはかなり難しいです。私はそれを十分に明確にしたことを願っています。

4

1 に答える 1

0

これを試して:

UPDATE i
SET i.organizations = 
  STUFF((
    SELECT ', ' + o.OrganizationName
    FROM Items_Organizations AS io
    INNER JOIN organizations AS o  ON o.organizationID = io.organizationID
    WHERE io.Item_Id = i.Item_Id AND io.Item_Id = 1
    FOR XML PATH(''))
  ,1,2,'')
FROM items AS i
WHERE i.Item_id = 1;

ここで実際にそれを見てください:

于 2013-07-08T14:59:14.103 に答える