現在、カテゴリ/国/地域に基づいて医師に異なるページを表示しているコンテンツターゲット機能に取り組んでいます。だからここ複数の列の値に基づいて最も特定の行の一致を選択する
は
page_id | target_region | target_countries | target_categories
---------+---------------+------------------+-------------------
1 | APAC | null | null
2 | APAC | JP | null
3 | APAC | JP | GP
4 | null | null | null
ページ4がデフォルトのページで、私たちのドクターテーブルがどのように見えるかここで、
id | name | age | region | country | doctor_category
----+--------+-----+--------+---------+-----------------
1 | Deepak | 25 | APAC | JP | GP
2 | Anil | 25 | APAC | JP | null
3 | Ajay | 27 | APAC | IN | null
4 | Amit | 28 | NA | CN | null
すべての私達のページ
が動的に生成される、あるページテーブルがどのように見えるかです条件が一致しない場合期待される出力:(ベスト・マッチ)
User(1) => Page(3)
User(2) => Page(2)
User(3) => Page(1)
User(4) => Page(4)
私はposgresqlでCASE/GROUP BY/ DISTINCT ON
で多くのことを試したが、1つ以上のシナリオのための成功、その失敗。私はハードコアのデータベースの男ではないので、私は同じ機能を達成するためにいくつかのビルドされた機能が不足している可能性があります。
ご意見をいただければ幸いです。 PostgreSQLではだけで働く、あなたのロジック
なぜユーザー4は、地域が北米である一方、地域がヌルのページを表示していますか? –
mysqlとpostgresqlは2つの異なる製品です。無関係のタグを削除してください。 –
と同様に、ページ1には国が関連付けられておらず、ユーザー3には国「IN」が指定されているのはなぜですか? –