このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/db/1274791771/485
#  postgresqlです。副問合せの結果を2つの列の条件にするには 
#  どうしたらよいでしょうか? 
#   
#  SELECT * FROM TABLE_A 
#  WHERE [TABLE_Aの列1または列2] IN (SELECT ID FROM TABLE_B WHERE NAME LIKE '%あ')  
#   
# 
# 
% 下の例ではテーブルの構造定義を持っていないため、SQLでは*で求められている"全ての"列を
% 表現できていない。SQLはその代わり、SQL Query以前的に create table によってデータベースを
% 定義して置く必要がある。

副問合せの結果を2つの列の条件にする例(_列1,_列2) :-
        'TABLE_A'(_列1,_列2),
        'TABLE_B'(_ID,_NAME),
        sub_atom(_NAME,_,1,0,あ),
        'IDが列1か列2に一致する'(_ID,_列1,_列2).

'IDが列1か列2に一致する'(_ID,_ID,_) :- !.
'IDが列1か列2に一致する'(_ID,_,_ID) :- !.