Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共15 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:[讨论]SQLJoinTableBuilder是否应该存异呢?

1楼
ybil 发表于:2011/6/20 11:29:00
目前的SQLJoinTableBuilder是求同法,排除异类,这太绝对了.我们不是常常提出解决问题方法是:求同存异!
也就是说SQLJoinTableBuilder只是相当SQL的INNER JOIN(要求两个表必须都有对应的记录,才会在查询表中生成记录)
,但不具备SQL的LEFT JOIN 或者 RIGHT JOIN的功能(前者只要求左边的表有对应的记录即可,后者只要求右边的表有对应的记录即可)。

专业统计工具SQLGroupTableBuilder等也是如此!

如图中代码只能得到前面4行数据,实际我是想得到全部6行数据!

文件为示例的『组合统计结果』

图片点击可在新窗口打开查看此主题相关图片如下:003.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2011-6-20 11:37:54编辑过]
2楼
狐狸爸爸 发表于:2011/6/20 11:31:00

呵呵,先请教一个问题,下面的语句改成Right Join,应该如何些?

 

Select 产品名称,客户名称,日期,数量,单价,数量 * 单价 As [金额] From ({订单} INNER JOIN {产品} ON {产品}.[产品ID] = {订单}.[产品Id]) INNER JOIN {客户} ON {客户}.[客户ID] = {订单}.[客户ID]

 

我改成Left Join能通过,改成Right Join则不可以,这是为什么?

[此贴子已经被作者于2011-6-20 11:31:33编辑过]
3楼
ybil 发表于:2011/6/20 12:27:00
Select 产品名称,客户名称,日期,数量,单价,数量 * 单价 As [金额] From ({产品} RIGHT JOIN  {订单} ON {产品}.[产品ID] = {订单}.[产品Id]) INNER JOIN {客户} ON {客户}.[客户ID] = {订单}.[客户ID]


{产品} RIGHT JOIN  {订单}    '『订单』表在右,所以 Right Join

[此贴子已经被作者于2011-6-20 14:18:52编辑过]
4楼
kylin 发表于:2011/6/20 12:52:00

期待纠偏行动可以早日完成,呵呵

[此贴子已经被作者于2011-6-20 12:52:23编辑过]
5楼
reachtone 发表于:2011/6/20 14:45:00
以下是引用ybil在2011-6-20 11:29:00的发言:
目前的SQLJoinTableBuilder是求同法,排除异类,这太绝对了.我们不是常常提出解决问题方法是:求同存异!
也就是说SQLJoinTableBuilder只是相当SQL的INNER JOIN(要求两个表必须都有对应的记录,才会在查询表中生成记录)
,但不具备SQL的LEFT JOIN 或者 RIGHT JOIN的功能(前者只要求左边的表有对应的记录即可,后者只要求右边的表有对应的记录即可)。

专业统计工具SQLGroupTableBuilder等也是如此!

如图中代码只能得到前面4行数据,实际我是想得到全部6行数据!

文件为示例的『组合统计结果』

图片点击可在新窗口打开查看此主题相关图片如下:003.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2011-6-20 11:37:54编辑过]

 

如果是这样,问题就大了。今天上午下载了最新的更新,还没试用。

完善的SQLJoinTableBuilder应该有以下选项:

1、交集。就是两表的共有部分,即目前已经实现的部分。

2、左表的全部记录,即相当于sql中的左连接left join,这就是ybil版主提到的这个需求。

3、右表的全部记录,即相当于sql中的右连接right join。

4、差集。可以得到左表的差集,也可以得到右表的差集。按照连接字段为null判断就可以了。

老六加油!

6楼
reachtone 发表于:2011/6/20 14:51:00
刚试了下,Combine组合统计结果不存在这个问题。我随便在“销售单”和“退货单”上增加几行记录都能组合进去。
7楼
ybil 发表于:2011/6/20 14:57:00
以下是引用reachtone在2011-6-20 14:51:00的发言:
刚试了下,Combine组合统计结果不存在这个问题。我随便在“销售单”和“退货单”上增加几行记录都能组合进去。
Combine组合是可以的,最好SQLJoinTableBuilder本身具备SQL Join的功能,您知道:你不出力挤挤,老牛不出奶!
8楼
狐狸爸爸 发表于:2011/6/20 15:05:00
能够将交集和差集的通用SQL语句给出来?
9楼
reachtone 发表于:2011/6/20 15:07:00
以下是引用狐狸爸爸在2011-6-20 15:05:00的发言:
能够将交集和差集的通用SQL语句给出来?

我做个简单的例子来吧

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目18.table

看窗口1,几种情况都有了,这里是用表A和表B简单的做个例子

[此贴子已经被作者于2011-6-20 15:18:09编辑过]
10楼
狐狸爸爸 发表于:2011/6/20 15:41:00
呵呵,谢谢
共15 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03906 s, 3 queries.