1

別の列にいくつかの可能な値があるテーブルから列を選択する方法を知りたいです。したがって、たとえば、列 G に入力によって指定された値がある場合、このコードはテーブル 1 から列 X を返し、テーブル 2 から列 B を返します。

variable input varchar2(60);
exec :input := 'c';

Select Table1.x, Table2.b
  FROM Table1, 
       Table2
 WHERE Table1.g = :input

代わりに、値が "k" または "c" または "d" の場合に、実行せずに列Xtable1を返したい場合はどうでしょうか。ColumnBTable2ColumnG

WHERE Table1.g = "k" or Table1.g = "c" or Table1.g = "d"

この効果が得られるように入力を定義するにはどうすればよいですか?

私が使用するもの: Oracle 10g、PL/SQL

4

5 に答える 5

0

それはかなり簡単です-

Select Table1.X, Table2.B FROM TABLE1, TABLE2 WHERE TABLE1.g IN ('c', 'd', 'k')

基本的に、別の結合条件がないため、Table1.g = cまたはdまたはkであるテーブル1のすべての行とTable2のすべての行のデカルト積が得られます。

于 2013-08-28T20:18:53.310 に答える
0

これをお探しですか?

Select Table1.x, Table2.b
FROM Table1, Table2
WHERE Table1.g  in ('c', 'd', 'k')

編集 - コメントへの返信:簡単ではない、こちらをご覧ください

于 2013-08-28T11:50:11.917 に答える
0

pl/sql を使用しているため、FOR ループを使用して各値のクエリを実行できます。このようなもの:

FOR x in ('k','c','d')
loop
Select Table1.x, Table2.b into var1,var2
FROM Table1, Table2
WHERE Table1.g = x
dbms_output.put_line(var1,var2);
end loop;
于 2013-08-28T12:38:03.633 に答える
-1

これを試すことができますか?

where table1.g in ("k","c","d")
于 2013-08-28T11:52:40.530 に答える