0

同じ構造のtable1との2 つのテーブルがあります。table2列は、、、、、Rです。a_ 、、はであり、です。bcdabcdINTRVARCHAR

Rとの合計が40 未満で、 と が同じであるaすべてtable1のが必要です。table2bcd

私が実行したステートメントは次のとおりです。

SELECT table1.R FROM table1,table2 where
table1.a + table2.a <40 or
table1.b + table2.b <40 or 
table1.c + table2.c <40 or 
table1.d + table2.d <40;

しかし、それは予想外の結果をもたらしています。返される行数は、2 つのテーブルのレコード数の合計よりもはるかに多くなります。

    table1                   table2
R   a   b   c   d            R      a     b    c    d
i1 45  28  29  22           i1      8   20   13    8
i2 28  28  29  30           i2      12   12  16     20 
i2 28  28  10  30           i2      12   12  16     20 
i2 28  5  29  30            i2      12   12  16     20 
i2 28  28  10  30           i2      12   12  16     20 
i2 28  28  29  30           i2      15   15  10     12 
i2 10  12  15  20           i2      8     3  6      12 

expected results 
i1

because table1.d+table2.d <40 for R = i1
4

1 に答える 1

1

完全に明確ではありませんが、おそらく必要なのは次のとおりです。

SELECT table1.R FROM table1,table2 where
table1.R = table2.R and
(table1.a + table2.a <40 or
 table1.b + table2.b <40 or 
 table1.c + table2.c <40 or 
 table1.d + table2.d <40);

このフィドルを見る

于 2012-12-16T04:28:28.703 に答える