【发布时间】:2012-02-28 14:07:13
【问题描述】:
我意识到这是相当抽象的,但我想做一些与“记住牛奶”的智能列表不同的事情: http://www.rememberthemilk.com/help/answers/search/advanced.rtm
我有一组经过标记、分类等的用户故事,我发现让用户可自定义的“视图”或“智能列表”返回一组特定的故事。这使得使用该应用程序的工作流程非常灵活且适用于许多不可预见的场景。
我现在对简单的 OR 查询没有任何问题:
WHERE tag = "tag1" OR tag = "tag2" OR category = "category1" OR category = "category2"
但这确实不如混合 AND/OR 条件有用:
WHERE (tag = "tag1" OR tag = "tag2") AND category = "category1"
因此,明显的问题是:
- 嵌套条件
- 在同一查询中混合使用 AND/OR 条件
- 使这种“查询抽象”语法或多或少具有人类可读性、易于存储/解析、URL 查询字符串友好等。
更糟糕的是,可以在 where 子句中很好地处理简单的 OR 条件,但 AND(复合条件)似乎需要每个条件的额外连接,我不知道如何在可持续代码中组织它。
我正在使用 PHP/MySQL,但这似乎不是特定于平台的。
总而言之,我想找到一种可持续的方法来解析人为生成的条件序列并将其转换为 SQL。
【问题讨论】:
-
您在寻找什么样的答案?现有技术的例子?伪代码(它的桶)?关于您正在实施某些解决方案的编程问题的建议?或者只是同意这个问题很棘手? (作为参考,这个问题很棘手。)
-
如何将语法字符串解析为顺序数据库操作,是否处理过滤客户端/服务器端,是否为每个保存的搜索创建自定义数据库视图。只是希望人们在这一点上抛出想法。
标签: php mysql codeigniter search nested