私は生物学的な「特定の生物群のコアゲノムを見つける」問題を見つけようとしています。基本的に、生物のリストがあれば、それらに共通するすべての遺伝子を見つける。離れて生物学を抽象化するために、人のリストの中で好きな色を見つけることができます(1人は複数の好きな色を持つことができます)。テーブルにn回自己結合する
データベースのテーブルには、次のようになります。出すために[ジョン、ジェイソン]のような名前のセットを指定することができます
name | fav_colour
john | red
john | blue
john | green
jason | red
jason | blue
matt | red
matt | teal
ユーザー[赤、青]、または[ジョン]を取得する[赤、青、緑]、[ジョン、ジェイソン、マット]を押して[赤]を取得します。 nが指定する名前の数である
私は自己のn個の数をすることによってこの問題を解決しようとしているが加わります。
私が指定する名前の任意の数のこの問題を解決するための表の結合、自己のn個の数を行うための方法はありますか?私はPostgres関数でこれを行う方法を探してみましたが、n個の自己結合部分を理解することはできません...正しい方向への助けや指針があれば幸いです。
そして、いや、残念ながら私は簡単にクエリのこれらの種類を行うには、スキーマを変更することはできません。
参加アプローチは、グループを使用して、それぞれの遺伝子を持っている(*)カウントどのように多くの生物カウントし、その後の持つ数=数を使用して、この上の私の最初の考えは使用集計のいずれかにある....私に話すものではありません生物。心に浮かぶもう一つのアイデアは、各生物のためのクエリを一緒にストリングし、共通要素を得るためにINTERSECTを使用することです。 – joshp
*正確にどのようにユーザーが "名前のセットを指定する"のですか?名前が1列のテーブルにあると仮定できますか? – philipxy
@philipxy私は、解析されてカウントされる値の配列を受け入れるストアドプロシージャが必要でした。配列内の項目の数はnになります。これは必要な自己結合の数になります。 – player87