有没有人有一个用户界面的例子来创建SQL Where子句?

时间:2008-09-22 22:41:03

标签: sql user-interface

我在尝试将嵌套条件映射到直观界面时遇到了麻烦。

例如。你将如何表示((条件1和条件2)或(条件1和条件5))和条件4

11 个答案:

答案 0 :(得分:7)

这是我几年前为linux应用程序做的原型的截图。您可以单击+/-图标向组添加行,然后单击“添加新...”和“删除最后...”按钮以删除最底部的组。

在每组之上是一对选择的“AND项目匹配......”/“OR项目匹配......”(除了第一组略有变化),以及“ANY of以下“/”以下全部“。每行都是类型感知的,因此如果您为变量选择了一个字符串,则条件为“IS”,“IS NOT”,“BEGINS WITH”等等。对于整数,你会得到“IS”,“GREATER THAN”等,以及日期“ON”,“BEFORE”,“ON or BEFORE”等等。

如果您在第一组的第二行和第三行之前看到“或”一词,那么如果选择“以下任何一项”,则为“或”,如果“以下所有”,则为“和”:被选中以加强选择并使其更容易“阅读”对话框。

它不会让你做任何可以想象的查询,但我认为它涵盖了普通用户想要做的大约90%,并以我认为相当有用的方式做到了。

screenshot of db query form
(来源:clearlight.com

答案 1 :(得分:3)

有些人会认为这是直观的。

logic

答案 2 :(得分:2)

假设.NET,我会使用DataGridView来存储每个条件,并在创建时为每个条件分配一个ID,并有一个允许您输入特定查询条件的文本框。

然后,您可以在编写完所有条件后,允许一次使用AND或OR组合2,然后显示生成的查询以进行验证

条件1

条件2

Condition3

Condition4

Condition5

在你的情况下,一旦你将每一个添加到你的数据集并填充DataGridView,你就会这样做(我想象一个带有3个下拉框的表单,顶部一个和底部一个允许条件或“复合”和中间下拉列表仅和/或:

Condition1 AND Condition2 =“Compound1”

条件1和条件5 =“化合物2”

化合物1或化合物2 =“化合物3”

化合物3和条件4 =“化合物4”

和compound4是您的最终查询

有意义吗?

答案 3 :(得分:2)

TheBat!拥有我个人所追求的最佳界面。 (用于邮件排序规则。)

它是:

源文件夹不是\\ Google \ Inbox

之一

  

主题以“新评论”结尾

     

主题匹配“某些字符串”

答案 4 :(得分:1)

Microsoft SQL Server有这样的界面,我在SQL Server 2000中使用它,但我敢打赌它在2005年表达,所以你可以看看你是否愿意。

答案 5 :(得分:1)

如果这很重要,可以花很多时间,我会考虑使用维恩图。可视化将表示结果集而不是查询术语。因此,为了演示AND,您将显示两个代表结果的圆圈,并突出显示它们之间的重叠(交点)。

为了演示OR,您将显示两个圆圈并突出显示两者的结合。

然后,要显示整个多部分查询,您可以显示五个圆圈,其中包含一些联合和交叉的组合,或者组合每个括号然后隐藏细节,使结果成为一个新的圆圈以与其他元素组合。这里有很多拖放,为了清晰起见,动态调整子条款的大小。

为了使这个直观且易于使用需要相当多的工作,但对于某些应用程序,它将是一个非常强大的界面。

答案 6 :(得分:1)

查看EasyQuery的任何现场演示:

http://devtools.korzh.com/easyquery/livedemos/

它是商业软件,但“条件”部分允许您添加单个条件或条件组,这从具有多个AND和/或OR的子句中消除了很多复杂性。它做得非常好,易于使用。

(我与EasyQuery没有任何关系,只是对他们的查询构建器印象深刻。)

EasyQuery screenshot

答案 7 :(得分:0)

我见过的最好的界面是一个本土控制,它画了一棵树,清楚地显示了操作的顺序。我从来没有见过这样做的第三方控件,但我也没有找过。

答案 8 :(得分:0)

您可以查看MS Access的工作方式。我不会直截了当地说它,但很简单。

答案 9 :(得分:0)

我曾经在一个系统上工作,我们将布尔逻辑对齐类似于下面的内容。

右列(内部)和(外部)提供两级逻辑。

Variable       Inner     Outer
Condition1     And
Condition2               Or
Condition1     And
Condition5               And
Condition4               

Or more optimized...

Condition4               And
Condition1               And       
Condition2               Or
Condition5

答案 10 :(得分:0)

它特定于其域名,但f-spot有一个很好的方法。它是照片管理软件,如果您点击其中一个标签按标签查找图片,它会在搜索结果顶部显示一个条形图。然后,您可以将标签拖放到该栏上,然后右键单击以选择否定,并可以在栏中拖动标签以分组到和和或子句中。我不确定多少标签(或非枚举条件)的扩展程度如何,但它很容易弄清楚并且很容易互动。