您将如何为高级CMS / sitebuilder设计查询构建器?如果我开始让用户选择受影响的表,那么应该显示的所有列,然后是条件,排序顺序和限制结果,我可能会提供信息以使查询如下:
SELECT df.gh, yu.df FROM df, yu WHERE df.id != yu.id AND df.other == yu ORDER BY df.something LIMIT 0,10
但更复杂的查询,如子查询,联接,工会等呢?我需要收集哪些信息才能正确地确定要生成哪种类型的查询?
我不是在这里要求代码,只是我一直在思考如何设计这个东西,我需要问用户哪些问题?
对于更简单的类型查询,如上所述,它非常简单,我脑海中有一张流程图片 - 但我想我甚至不知道其他查询类型的知识我需要收集哪些信息才能制作一个。任何关于如何构建这样的东西的设计理念都将受到赞赏!
另一个问题,这些“先进”的发展问题有多重要?我正在研究的CMS也将有一些类型的脚本引擎,所以如果总是可以使用代码解决任何问题,我可能不需要支持子查询,联合,联接等。您认为最低要求是什么?
我制作的任何东西当然都是开源的,所以我的方式抛出任何想法 - 我有一些编码开始。 ; - )
答案 0 :(得分:2)
几年前,我与esperant合作。它是一个查询构建器和报告工具。 Esperant允许用户编写自己的查询,也可以用类似的英语编写。并且还有向导来制作查询。我喜欢Esperant,它可以简化一个复杂的查询,将它分成几个命名的查询。
当调用Esperant向导时,会出现一个模态窗口,用户可以在多种查询样式之间尝试:简单查询(从多个表中选择字段并生成条件),查询,组合查询。你可以修改查询来创建新的查询。
所有这些工具都有一个semantical layer abstraction,可以通知工具关于表关系(可以进行连接)。
我还使用过其他OLAP和报表工具。目前有MS SSAS和Tableau Software。