如何在Web表单GUI中实现用户友好的布尔逻辑?

Mig*_*uel 33 user-interface boolean-logic

目前我有一个Web应用程序,用户可以使用下拉列表生成SQL SELECT语句,如下所示:

列选择下拉列表| 运算符下拉(=!=> << =>)| 值选择下拉列表

用户可以多次执行此操作,并且"过滤器"当前全部与AND编号在一起.

我想添加创建OR语句的可能性.在列相同的情况下,我可以很容易地添加OR,但是复杂的逻辑语句如何

((或或B或C)和(D或E))或(F和G)?

如何让用户以用户友好的方式创建此类语句?

编辑:为一般受众指定,用户友好.目前,我与开发人员合作,偶尔为需要我们数据库中特定信息的非技术客户端手动编写SQL查询.我们的目标是通过为客户提供易于使用的工具来自行完成,这个Web应用程序将无需我们手动编码.

EDIT2:目前最终用户没有使用该应用.我使用的唯一数据是以前的手写SQL查询,因此客户端要求的查询类型.鉴于我可以简化它(例如限制用户为他们倾向于要求的查询类型生成查询的能力),但我想看看是否有人在GUI中简单而完整地传达布尔逻辑的经验.

感谢您的时间.

dry*_*obs 25

有一个jquery插件来执行此操作,称为QueryBuilder,它以一种有趣的方式执行此操作:http://mistic100.github.io/jQuery-QueryBuilder/

Jquery QueryBuilder截图


mb2*_*b21 14

Apple似乎找到了一种为嵌套布尔表达式设计GUI的方法:请参阅UX.stackexchange上接受的答案.

在此输入图像描述


Jul*_*iet 7

当您需要处理时( (A or B) and C) or (D or E or F),您正在使用树状数据结构.根据我的经验,没有简单的方法以"漂亮"或"直观"的方式向用户表示决策树.它在ASP.NET webforms中倍加困难.

但是,一种经过验证的方法如下:单个文本框接受where子句.相信我,单输入法真的是最简单直观的用户界面,它还具有允许快速输入/修改查询过滤器的优点*.

**从技术方面来说,另一个优势是能够编写自己的词法分析器/解析器和AST.你经常在一个基本的crud应用程序中做到这一点:)*

您已经开始培训您的用户如何使用您的即席查询引擎,您也可以训练他们输入的内容(account.Balance < -2000 and account.Type == 'Checking') OR (account.Number = 123456)完全按照它所说的返回.

如果采用这种方法,请为用户提供可用列的下拉列表,以便双击项目将项目插入光标位置的文本框中.

  • 你可以尝试清理,如删除`;`和其他邪恶的东西..但告诉客户学习SQL我不认为是一个很好的解决方案 (2认同)