有没有人提供用于创建SQL Where子句的用户界面示例?
我在尝试将嵌套条件映射到直观界面时遇到麻烦。
例如。我们将如何表示((Condition1 AND Condition2)OR(Condition1 AND Condition5))AND Condition4
解决方案
为此,我看到的最好的界面是一个自家控件,该控件绘制了一棵树以清楚显示操作顺序。我从未见过执行此操作的第三方控件,但是我也没有寻找任何控件。
Microsoft SQL Server具有这样的接口,我曾在SQL Server 2000中使用过它,但我敢打赌,它也在2005 Express中表达,因此我们可以根据需要进行查看。
假设使用.NET,我将使用DataGridView来存储每个条件并在创建每个ID时为其分配一个ID,并具有一个允许我们输入特定查询条件的文本框。
然后,一旦所有条件都写入,我们就可以一次将2与AND或者OR组合在一起,然后显示结果查询以进行验证
条件1
条件2
条件3
条件4
条件5
在情况下,将每一个添加到数据集中并填充DataGridView之后,我们便可以这样做(我想象一个带有3个下拉框的表单,顶部和底部的一个允许条件或者"化合物",中间的下拉列表是AND /或者仅:
Condition1 AND Condition2 ="化合物1"
Condition1 AND Condition5 ="化合物2"
Compound1 OR Compound2 ="化合物3"
Compound3 AND Condition4 ="化合物4"
而compound4是最终查询
有道理?
我们可以检查MS Access的工作方式。我不会说它直观,但是它很简单。
有人会认为这是尽可能直观的。
逻辑http://hyperphysics.phy-astr.gsu.edu/hbase/Electronic/ietron/simlog3.gif
如果这很重要,需要花费大量时间,则可以考虑使用维恩图。可视化将代表结果集而不是查询词。因此,为了演示AND,我们将显示两个表示结果的圆圈,并突出显示它们之间的重叠(相交)。
为了演示OR,我们将显示两个圆圈并突出显示两个圆圈的并集。
然后,要显示整个多部分查询,我们可以显示五个具有并集和交集组合的圆,或者组合每个括号然后隐藏细节,从而使结果成为一个新的圆以与其他元素组合。为了清晰起见,此处进行了大量拖放操作,并动态调整了子条款的大小。
要使其直观且易于使用,将需要进行大量工作,但对于某些应用程序,它将是一个非常强大的界面。
我曾经在一个与以下类似的布尔逻辑对齐的系统上工作。
右列(内部)和(外部)提供了两个逻辑级别。
Variable Inner Outer Condition1 And Condition2 Or Condition1 And Condition5 And Condition4 Or more optimized... Condition4 And Condition1 And Condition2 Or Condition5
球棒!具有我亲自接触过的最佳界面。 (用于邮件排序规则。)
它去了:
源文件夹不是\ Google \ Inbox之一
和
Subject ends with "new comment" OR Subject match "some string"
这是几年前我为linux应用制作的原型的屏幕截图。我们可以单击+ / icons将行添加到组中,然后单击"添加新..."和"删除最后一个..."按钮以删除最底部的组。
每个组上方都有几个菜单按钮,可以选择"与...匹配的项目" /"与...匹配的项目"(第一组稍有不同)和"以下任意项目" /"以下所有内容"。每行都是类型识别的,因此,如果为变量选择字符串,则条件将为" IS"," IS NOT"," BEGINS WITH"等等。对于整数,我们将得到" IS","大于",等等,对于日期" ON"," BEFORE"," ON或者BEFORE"等等。
在第一组的第二行和第三行之前看到单词"或者"的情况下,如果选择了"以下任何一个",则为"或者";如果选择了"以下所有:",则为"和"。加强选择并使其更容易"阅读"对话框。
它不会让我们进行任何可能的查询,但我认为它涵盖了普通用户想要执行的操作的90%左右,并且以我认为相当实用的方式进行了操作。
db查询表单http://www1.clearlight.com/~oakley/dbquery.jpg的屏幕截图
它是特定于其域的,但是f-spot有一个很好的方法来做到这一点。它是照片管理软件,如果单击其中一个标签以按标签查找图片,它将在搜索结果的顶部显示一个栏。然后,我们可以将标签拖放到该栏上,然后右键单击以选择否定,并可以在栏中拖动标签以将其分组为and和or或者子句。我不确定这对标签数量(或者非枚举条件)的可扩展性如何,但要弄清楚并具有很好的交互性是非常困难的。