SELECT only可视化查询构建器背后的逻辑是什么?

本文关键字:是什么 背后 only 可视化 查询 构建 SELECT | 更新日期: 2023-09-27 18:02:00

技术:VS.net 2008, c#, Winforms, SQL Server 2008

所以,我有点搞砸了在工作中,我显然只是承诺提供一个可视化的查询生成器客户只剩下1周的项目。(我刚开始和客户打交道)

无论哪种方式,我都在试图找出SELECT语句连接背后的逻辑。(查询生成器只需要执行SELECT查询)

很容易获得db表和列列表,以及如何创建"WHERE","and"answers"OR"部分,但我不确定我应该如何考虑编写连接。

我必须开发它,因为使用外部应用程序或。dll需要获得批准,这可能需要一年多的时间(不是一个选项)

是否有一个硬性规则说"当写一个select语句时,你使用有最多结果的表作为你的"FROM"表,等等"

我注意到MS Access主要是左连接,但我不明白为什么。

编辑:由于项目被延迟到架构问题,我不再需要在本周结束之前创建它,但是,我将再次问这个问题,希望得到连接语句

SELECT only可视化查询构建器背后的逻辑是什么?

背后的"逻辑"的答案。

这是一个可能对您有用的CodeProject类

http://www.codeproject.com/KB/database/SelectQueryBuilder.aspx

我找到的关于类似主题的唯一其他大块源代码在这里:

http://www.blackbeltcoder.com/Articles/strings/a-sql-querybuilder-class

祝你好运,记住…承诺以内/超额交付。而不是反过来:)

(take heart to…)我们都这样做过——即使是那些不愿承认的人)

SQL连接背后的真正"逻辑"进入关系代数(我认为维基百科有一个很好的高层次概述- http://en.wikipedia.org/wiki/Relational_algebra)。这是一个很大的话题,整堂课/整本书都在讨论它。

但是你的问题还是把我弄糊涂了。如果你正在编写一个可视化的查询生成器——你不应该关心连接背后的逻辑。您可以假设正在使用的关系数据库将正确处理该逻辑并返回结果。只有在编写自己的数据库时才需要实现连接的实际逻辑。

如果你正在编写自己的可视化查询生成器,你真的只需要一种方法让用户指示他们想要的连接类型并从中构建有效的SQL。我见过的大多数工具都使用左外连接(就像你提到的Access一样),因为客户端/客户/用户不可避免地会有坏的或丢失的数据。当你进行内连接时,他们会说,‘你的工具不工作,我应该有250行,但我只得到232行’。当你执行外连接时,他们会说,‘我有250行,但其中一些缺少数据....我最好把它修好。"左连接对大多数人来说似乎更自然(至少,我猜,在人们从左到右阅读的地方)。

如果你想让你的查询生成器支持一切可能的SQL -你有一个巨大的,巨大的,巨大的项目....就像其他人说的,你完蛋了。但是我开发的应用程序,人们不喜欢它。他们想要一种超级简单、有限的方式来构建查询。这很简单。我觉得你很有可能把这些东西拼凑起来。我组合的"简单"查询构建工具使用了8个预定义的查询,并允许用户在运行时提供标准。不能添加表,不能改变连接类型,不能联合,不能聚合,不能做任何事。但比起我们购买的功能齐全的"高级"商业工具,他们使用得更多。

我希望这对你有帮助。好运!