在数据库中存储SQL查询是一个好的做法吗?

问题描述 投票:0回答:1

我的用例。

我们允许系统的用户根据用户界面上的过滤器的种类来创建一个联系人信息的列表(即段)。因此,他们使用一个表单来创建段,以选择所有居住在某一州的人。

所以这里的问题是,当新的联系人被添加时,我希望这些段也能被更新。我能想到的解决方案是为每个段保存SQL查询,当添加新联系人时,使用这些SQL查询更新每个段。

我想过只保存json字符串格式的参数,但复杂的是,可用的过滤器是在多个表上的,而且没有办法生成动态SQL查询,因为它涉及到连接和不同的过滤器(即 "in","endswith "等)。

我觉得这两种方法都不是最好的解决方案。有什么更好的想法吗?

任何帮助都将是感激的,先谢谢了

更新:我所需要的JSON参数和Query

{'is_buyer': ['1'], 'is_executive_member': ['1'], 'is_member': ['1'], 'survey_participant': ['1'], 'cluster': ['A'], 'state': ['state1'], 'city': ['ab', 'cd'], 'gender': ['male']}

预期的查询输出。

SELECT * FROM `contacts` INNER JOIN `contacts_clusters` ON (`contacts`.`KEY` = `contacts_clusters`.`KEY`) WHERE (`contacts`.`IS_BUYER` IN (1) AND `contacts`.`IS_EXECUTIVE_MEMBER` IN (1) AND `contacts`.`IS_MEMBER` IN (1) AND `contacts`.`SURVEY_ID` IS NOT NULL AND `contacts_clusters`.`CLUSTER` IN ('A') AND `contacts`.`STATE` IN ('state1') AND `contacts`.`CITY` IN ('ab', 'cd') AND `contacts`.`GENDER` IN ('male'))

这只是分段过滤的一个例子。还有更多的参数和表格可以用于创建段过滤。

mysql django mysql-python
1个回答
0
投票

我认为你最好存储该段所需的参数,然后当新的联系人被添加时,你会根据存储的段参数检查新的联系人是否匹配。如果符合,你就会更新该段。

© www.soinside.com 2019 - 2024. All rights reserved.