我目前正在研究內容定位功能,我們正在根據他們的類別/國家/地區向醫生顯示不同的頁面。根據多個列值選擇最具體的行匹配
因此,這裏是我們的醫生表的樣子,
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
我們所有的頁面是動態生成的,這是我們的頁表的樣子,
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頁是默認頁面如果沒有條件匹配
預期輸出:(最佳特定匹配)
User(1) => Page(3)
User(2) => Page(2)
User(3) => Page(1)
User(4) => Page(4)
我嘗試了很多與posgresql CASE/GROUP BY/ DISTINCT ON
,但沒有成功,對一個或多個方案的失敗。我不是一個硬核數據庫的人,所以我可能會缺少一些構建的功能來實現相同的功能。
任何建議將不勝感激。
爲什麼用戶4在地區爲北美的情況下顯示的地區爲null的頁面? –
mysql和postgresql是兩種不同的產品。請刪除不相關的標籤。 –
同樣,爲什麼頁面1沒有國家關聯,而用戶3的國家「IN」指定? –