我目前正在研究内容定位功能,我们正在根据他们的类别/国家/地区向医生显示不同的页面。根据多个列值选择最具体的行匹配
因此,这里是我们的医生表的样子,
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”指定? –