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

Posted

技术标签:

【中文标题】有没有人有一个用于创建 SQL Where 子句的用户界面示例?【英文标题】:Does anyone have an example of a User Interface for creating a SQL Where clause? 【发布时间】:2008-09-22 22:41:03 【问题描述】:

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

例如。你将如何表示 ((Condition1 AND Condition2) OR (Condition1 AND Condition5)) AND Condition4

【问题讨论】:

【参考方案1】:

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

每组上方是几个菜单按钮,可以选择“AND 匹配的项目...”/“OR 匹配的项目...”(除了第一组略有不同)和“ANY of以下”/“以下所有”。每一行都是类型感知的,因此如果您为变量选择了一个字符串,则条件将是“IS”、“IS NOT”、“BEGINS WITH”等等。对于整数,您将获得“IS”、“GREATER THAN”等,对于日期,您将获得“ON”、“BEFORE”、“ON OR BEFORE”等。

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

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

(来源:clearlight.com)

【讨论】:

【参考方案2】:

有些人会认为这很直观。

【讨论】:

【参考方案3】:

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

然后,您可以在编写完所有条件后,允许一次将 2 个与 AND 或 OR 组合,然后显示结果查询以供验证

条件1

条件2

条件3

条件4

条件5

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

Condition1 AND Condition2 = "Compound1"

Condition1 AND Condition5 = "Compound2"

Compound1 OR Compound2 = "Compound3"

Compound3 AND Condition4 = "Compound4"

 

compound4 是您的最终查询

有意义吗?

【讨论】:

听起来很有趣。我可以试试这个。【参考方案4】:

TheBat! 拥有我个人认为最好的界面。 (用于邮件排序规则。)

是这样的:

源文件夹不是 \\Google\Inbox

之一

主题以“新评论”结尾

OR 主题匹配“某个字符串”

【讨论】:

【参考方案5】:

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

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

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

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

【讨论】:

这个答案应该会得到更多的爱。诚然,它没有按要求提供示例,但它是一个极具创意和原创的答案,可以作为一个非常酷的、开创性的 UI 的灵感。很好的答案!【参考方案6】:

Microsoft SQL Server 有一个类似的界面,我在 SQL Server 2000 中使用过,但我敢打赌它也在 2005 express 中,所以如果你愿意,可以看看。

【讨论】:

【参考方案7】:

查看 EasyQuery 的任何现场演示:

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

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

(我不隶属于 EasyQuery,只是对他们的查询生成器印象深刻。)

【讨论】:

【参考方案8】:

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

【讨论】:

【参考方案9】:

您可以查看 MS Access 是如何做到的。我不会称之为直观,但它很简单。

【讨论】:

这是我看的第一个地方。它对我的目的来说不够直观,但我可能会尝试修改版本。【参考方案10】:

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

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

可变内外 条件 1 和 条件 2 或 条件 1 和 条件 5 和 条件4 或者更优化... 条件 4 和 条件 1 和 条件 2 或 条件5

【讨论】:

【参考方案11】:

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

【讨论】:

以上是关于有没有人有一个用于创建 SQL Where 子句的用户界面示例?的主要内容,如果未能解决你的问题,请参考以下文章

过去 13 个完整月的 SQL WHERE 子句

深入理解CQL中的Where子句

将 IN() 用于数组的 PL/SQL where 子句

Oracle where exists 子句不适用于 SQL Plus

Oracle的where子句

将用户输入的搜索查询转换为用于 SQL Server 全文搜索的 where 子句