0

テーブルの列を更新する必要があります。その列に現在存在するのと同じデータに加えて、ある列のデータを別のテーブルのデータに追加します。問題のテーブルは3Nです。

プリンシパルテーブルの1つの列から既存のテーブルの列にデータを変換することにより、複雑な更新を実行しようとしています。

update Catelog.Component SET Name = p.Number 
          FROM Catelog.Part p                                JOIN 
               Catelog.ComponentPart cp ON p.ID = cp.PartID  JOIN 
               Catelog.Component c      ON cp.ComponentID = c.ID  
          where p.BrandID = 1003
          AND ct.Name='Door' + '|'+ Name;

設定している[名前]列に気付く場合は、その列にすでに存在するデータをリセットし、PartNumberの前に付けます。

基本的に、[名前]列の既存のデータの前にパーツテーブルのパーツ番号を付ける必要があります。

現在、SQLはあいまいなエラーを表示しています。

さらに、この更新を構造化した方法で行が正しく設定されるとは思いません。

このような結合された更新を行うための最良の方法は何ですか?

4

3 に答える 3

2
UPDATE c
  SET c.Name = RTRIM(p.Number) + '|' + c.Name 
FROM Catelog.Part AS p              
INNER JOIN Catelog.ComponentPart AS cp     
  ON p.ID = cp.PartID  
INNER JOIN Catelog.Component AS c  
  ON cp.ComponentID = c.ID  
WHERE p.BrandID = 1003
  AND ct.Name = 'Door|'+ c.Name;
于 2012-08-10T17:51:31.100 に答える
2
Update  C
Set C.Name = CAST(p.Number as varchar(10)) + '|'+ C.Name
FROM Catelog.Component C
JOIN Catelog.ComponentPart cp     
    ON p.ID = cp.PartID  
JOIN Catelog.Component c  
    ON cp.ComponentID = c.ID  
where p.BrandID = 1003
AND ct.Name='Door' + '|'+ C.Name;

家系の名前がどこに属しているのかわかりません(どのテーブルから、明確ではありません)

于 2012-08-10T17:52:12.860 に答える
0

これを実行しますか:

update Catelog.Component 
SET Name = p.Number + '|'+ Name
FROM Catelog.Part p              
JOIN Catelog.ComponentPart cp  ON p.ID = cp.PartID  
JOIN Catelog.Component c       ON cp.ComponentID = c.ID  
JOIN Catelog.Category ct       ON p.CategoryID = ct.ID
where p.BrandID = 1003
    AND ct.Name='Door';
于 2012-08-10T17:50:00.877 に答える