【发布时间】:2022-01-21 03:28:52
【问题描述】:
我需要构建一个棘手的 SQL 查询,以便根据客户会话和地理 IP 数据获得最高优先级规则。
我附上了以下表格:rule、rule_attribute、rule_attribute_value。
rule - 存储所有规则的表 Click here to see a screenshot of the 'rule' table
rule_attribute - 存储所有规则属性的表 Click here to see a screenshot of the 'rule_attribute' table
rule_attribute_value - 存储所有规则属性值的表 Click here to see a screenshot of the 'rule_attribute_value' table
当客户登录时,我可以访问所有这些属性(customer_id、customer_group_id、country_id、subdivision_one_id、subdivision_two_id)。只有 customer_id 和 customer_group_id 将始终具有值。其他是可选的,但它们之间存在依赖关系。如果不首先选择一个国家,我们就不能进行细分。我们可以在不选择国家和第一个细分的情况下进行第二个细分。
我想得到的是以最优化的方式匹配会话数据的最高优先级规则。我有一个涉及一些编码的解决方案,但我想看看是否可以直接通过 SQL。
以下是会话数据数组的一些示例:
Array
(
[customer_id] => 2
[customer_group_id] => 1
[current_store_id] => 0
[country_id] => 15
[subdivision_one_id] => 224
[subdivision_two_id] =>
)
Array
(
[customer_id] => 2
[customer_group_id] => 1
[current_store_id] => 0
[country_id] => 15
[subdivision_one_id] =>
[subdivision_two_id] =>
)
Array
(
[customer_id] => 3
[customer_group_id] => 2
[current_store_id] => 0
[country_id] =>
[subdivision_one_id] =>
[subdivision_two_id] =>
)
【问题讨论】:
-
请将数据和代码作为文本而不是图像发布
-
@iupaem 请在下面删除您的答案并将详细信息添加到您的问题中。将您的示例数据(当前链接的图像)作为降价表添加到您的问题中,您将更有可能得到回复。