2009-07-30 4 views
0
SELECT (b.descr || ' - ' || c.descr) description 
FROM table1 a 
    INNER JOIN table2 b ON a.account = b.account 
    INNER JOIN table3 c ON a.product = c.product 
WHERE a.descr = ' ' ; 

上記のサブクエリを使用してテーブルを更新するにはどうすればよいですか?その行を返す複数の行は、ほぼ8000行ですか?あなたのための解決策があれば私と共有してください?複数の行を返すサブクエリを持つテーブルを更新する

+0

テーブルスクリプトを作成してください - それは私たち全員を救います。 – Liao

+0

プレミアム、あなたは直面している*同じ問題*に、これを含む* 4つの質問があるようです。 1)http://stackoverflow.com/questions/1199733/getting-extra-rows-after-joing-the-table-using-left-join 2)http://stackoverflow.com/questions/ 1198183/update-a-table-of-the-other-two-table-help-me-in-this 3)http://stackoverflow.com/questions/1204563/updating-副問合せを返す複数行の行 – Liao

+0

さらに、StackOverflow FAQを読む時間を取ってください。 (私が知っている3つのコメント - 次回はよかったです) – Liao

答えて

1

私はあなたが正確に何をしたいのか理解していないが、あなたは副選択ステートメントでサブクエリを使用することができます。

UPDATE table1 a SET a.descr = (
    SELECT MAX(b.descr || ' - ' || c.descr) 
    FROM table2 b, table3 c 
    WHERE b.account = a.account AND c.product = a.product 
) 
WHERE a.descr = ' ' 

MAXは()あなたのためだけに値を選択します。

+0

@ steve私はtable2とtable3の説明をconcatinatingしてtable1フィールドdescrを更新したいのですが、select文を使っています。私はそれを更新しようとすると、複数の行を返すエラーサブクエリを示しています。これで私を助けてくれますか? – Prem

+0

投稿された声明はなんですか? –

1

両方ともOracleサーバーで& SQLサーバーでサブクエリを1行以上返すと、データベースはエラーを報告します。

サブクエリの結果値が同じ場合は、MAX()またはMIN()関数を使用してDBに値を選択させるだけです。

+0

私は別の行に異なる値を持つテーブルを更新したいのですが、max()を使うと同じ値で更新されます。もし私が間違っていたら私を正してください。解決策を見つけるのを助けてください。 – Prem

0

試してみてください。複数の行があり、TABLE1が見最後になってしまいます

UPDATE a SET descr = (b.descr || ' - ' || c.descr) 
FROM table1 a 
    INNER JOIN table2 b ON a.account = b.account 
    INNER JOIN table3 c ON a.product = c.product 
WHERE a.descr = ' ' ; 

ロブ

関連する問題