2017-09-07 14 views
0

複数の列のすべての可能性を出力するクエリを作成したいと思います。入力は次のようになります。 靴は 手袋は シャツは、オンライン、オンライン、 を 手袋を 靴を買う、買う、買う、以下のように、第2の仮想的な入力が1rstで次の複数の列の可能なすべての組み合わせを作成する

Keyword 1|Keyword 2|Keyword 3 
---------+---------+---------- 
shoes |buy  |shop 
gloves |online 
shirts | 

結果だろう

Keyword 1|Keyword 2|Keyword 3 
---------+---------+---------- 
shoes |buy 
gloves |online 
shirts | 

シャツオンライン、

2番目の結果は次のとおりです。 靴は シャツはオンライン、オンライン、オンライン、 シャツを 手袋を 靴を買う、 靴が店を買い、 手袋は店を買う、 手袋を買う、買う、 シャツショップ、 靴のオンラインショップ、オンライン 手袋ショップ、 を買いますシャツオンラインショップ

両方の状況で動作するクエリを作成する方法はありますか?列の数は、潜在的に最大5

ように変化するであろうおかげ

答えて

0

はデカルトを行うのと同じテーブル間の結合:

select t1.col, t2.col, t3.col 
from tab t1, tab t2, tab t3 

あなたは重複を排除したい場合、あなたはこのトリックを試すことができます:

select t1.col, t2.col, t3.col 
    from tab t1 
join tab t2 on t1.col != t2.col 
join tab t3 on t2.col != t3.col and t3.col != t1.col 

あなたがここにさまざまなオプションについて読むことができます:http://www.postgresqltutorial.com/postgresql-cross-join/

+0

洞察をいただきありがとうございます。この列を同じ表内で参照することは可能ですか? –

+0

はい。ご覧のとおり、同じテーブルの 'tab'から' col'という同じカラムを3回使用しています。 –

関連する問題