0

テーブル 1 からすべての行を取得するクエリを作成してから、対応する行がテーブル 2 に存在するかどうかを確認し、存在する場合は、いくつかのデータをプルし、JOIN してテーブル 3 に挿入しようとしています。これは疑似コードでより意味があります -これが私がやろうとしていることです。手続き的に、PL/SQLでこれを実装する方法がわかりません。

For all rows in T1:
    For all rows in T2:
        if (T1.mycolumn - T2.othercolumn) > 0:
            INSERT INTO T3 (foo, bar) VALUES T1.foo, T2.bar

ありがとう!

4

2 に答える 2

2

のようなものを説明しているように聞こえます

INSERT INTO t3( foo, bar )
  SELECT t1.foo,
         t2.bar
    FROM t1
         LEFT OUTER JOIN t2 ON (t1.mycolumn > t2.othercolumn)

ただし、それが実際にあなたが望んでいるものかどうかはわかりません。いくつかのサンプル データと予想される出力が役立ちます。あなたが説明していることでは、値はの多くの異なる行に一致するため、 にt1.foo何度も挿入される可能性があります。通常、適切な行が存在するかどうかを判断するために使用する共通のある種のキーがあり、条件は単なる別の述語になりますt3t2t1t2t2t1.mycolumn > t2.otherColumn

INSERT INTO t3( foo, bar )
  SELECT t1.foo,
         t2.bar
    FROM t1
         LEFT OUTER JOIN t2 ON (    t1.someKey = t2.someKey 
                                AND t1.mycolumn > t2.othercolumn)
于 2012-06-20T14:49:44.400 に答える
0
insert into T3 (foo, bar)
select T1.foo, T2.bar
from T1, T2
where T1.mycolumn - T2.othercolumn > 0
于 2012-06-20T14:48:27.530 に答える