2012-01-10 70 views
2

您将如何为高级CMS/sitebuilder设计查询构建器?如果我通过让用户选择受影响的表开始的,然后应该显示,所有列那么标准,排序顺序和限制的结果,我可能有足够多的信息来做出这样querys:设计SQL查询构建器

SELECT df.gh, yu.df FROM df, yu WHERE df.id != yu.id AND df.other == yu ORDER BY df.something LIMIT 0,10 

但对于更复杂querys,像子querys,加入,工会等?我需要收集哪些信息才能对要生成的查询类型做出正确的判断?

我不是在这里要求代码,这只是我卡在我的思考如何设计的事情,哪些问题,我需要问用户?

对于更简单的类型查询,就像上面那样,它非常直接,我在头脑中有一个流程的图片 - 但是我想我对其他查询类型的知识还不够,甚至没有知道我需要收集什么信息才能制作一个。任何有关如何建设这样的设计想法将不胜感激!

另一个问题,这些“先进”查询对于开发有多重要?我正在研究的CMS thingy也会有一些类型的脚本引擎,所以如果总是可以解决使用代码的任何问题,我就不需要支持子查询,联合,联接等等。你认为最低要求是什么?

我产生的任何东西当然都是开源的,所以按照我的方式抛出任何想法 - 我有一些编码可以开始。 ;-)

+0

我只是从检查Microsoft Access中的一个并从中窃取想法开始。 – Blazemonger 2012-01-10 21:13:50

回答

2

几年前,我与esperant合作。它是一个查询生成器和报告工具。世界语允许用户编写自己的查询语言,也可以用类似英语的语言编写。并且还有向导来制作查询。我喜欢的世界语是它可以简化一个复杂的查询,分裂它在几个命名查询。

当调用Esperant向导时,会出现一个模态窗口,用户可以尝试几种查询风格:简单查询(从多个表中选择字段并生成条件),查询,组合查询。你可以用recicle来创建新的。

所有这些工具都有一个semantical layer abstraction通知工具关于表关系(可以做连接)。

我也曾与其他OLAP和报告工具。这时用MS SSASTableau Software

+1

链接已死亡。这可能会更好:http://www.freschelegacy.com/en/data-sheets/esperant-query-and-reporting-tool-better-business-decisions 虽然看起来很旧。 – archangel76 2015-02-16 22:28:54

+0

@ archangel76你安装了它吗?哇。 – danihp 2015-02-17 07:27:53

+0

没办法。我只是修复了这个链接。 – archangel76 2015-02-24 14:34:08