CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

sql高手请进,sql出现怪事

楼主handsome1234(我太菜了,)2002-07-23 16:37:06 在 Delphi / VCL组件开发及应用 提问

ckls出库历史  
  FA   A2                                                       A8  
  1 素围巾                                                 10    
  2 V领男套衫                                                 10  
  3 V领抽条男套背心                                   10  
  4 扇贝网眼围巾                                   10  
  5 超薄精纺纯绒披肩                                   10  
  6 小八字领长袖明门平摆女衬衫                 10  
  7 大八字领长袖明门圆摆女衬衫             20  
  8 自带领翻花半袖女套衫               20  
  9 大圆领抽条女套衫                             20  
  10 V领半袖男套衫                                 6  
  11 自带领翻花半袖女套衫             19  
  12 超薄精纺纯绒披肩                                 10  
  13 素围巾                                                     10  
  14 V领男套衫                                                 10  
  15 扇贝网眼围巾                                   2  
  16 V领抽条男套背心                                   1  
   
   
  xsls   入库历史  
  FA A2                                                 A8  
  1 V领半袖男套衫                                 6  
  2 自带领翻花半袖女套衫                 20  
  3 超薄精纺纯绒披肩                                 10  
  4 素围巾                                                 10  
  5 V领男套衫                                                 10  
  6 V领抽条男套背心                                 1  
  7 扇贝网眼围巾                                 2  
   
   
  Select   A.A2   As   PM,Sum(A.A8)   As   CK,Sum(B.A8)   As   XS  
  From   CKLS   As   A   Left   Join   XSLS   As   B  
  On   (A.A2=B.A2)   And   (A.A8=B.A8)  
  Group   By   A.A2    
  问题一:执行完语句后   xs这一列   数据就不对,  
                                  pm                                                                               ck               xs  
  1 V领半袖男套衫                                         6                 6  
  2 V领抽条男套背心                                         11       1  
  3 V领男套衫                                                           20     20    
  4 超薄精纺纯绒披肩                                         20               20    
  5 大八字领长袖明门圆摆女衬衫                     20  
  6 大圆领抽条女套衫                                     20  
  7 扇贝网眼围巾                                       12   2  
  8 素围巾                                                         20                 20      
  9 小八字领长袖明门平摆女衬衫                   10  
  10 自带领翻花半袖女套衫                   39                 20    
   
   
  ///////////////////////////////////////////////////////////////  
  如果执行这一句,结果更可怕:  
   
  Select   A.A2   As   PM,Sum(A.A8)   As   CK,Sum(B.A8)   As   XS  
  From   CKLS   As   A   Left   Join   XSLS   As   B  
  On   (A.A2=B.A2)       {   如果少了这句   And   (A.A8=B.A8)     }  
  Group   By   A.A2  
                        pm                                                             ck               xs  
  1 V领半袖男套衫                               6                 6  
  2 V领抽条男套背心                               11     2   //这里有点变化1--》2  
  3 V领男套衫                                                   20     20    
  4 超薄精纺纯绒披肩                                   20               20    
  5 大八字领长袖明门圆摆女衬衫                   20  
  6 大圆领抽条女套衫                                   20  
  7 扇贝网眼围巾                                 12       4        
                                                                                                        //这里有点   变化2--》4  
  8 素围巾                                                 20                 20      
  9 小八字领长袖明门平摆女衬衫             10  
  10 自带领翻花半袖女套衫             39                 40     //这里有点变化20--》40  
   
   
  问题二:我标记的为什么会有变化  
   
   
  请问各位:这里的sql语句执行出来的怎么是这样的呢?  
   
   
   
  我想要得到的,大家从sql中可以看出来:  
  以出库为基准,把出库和销售同名的货物作个统计sum()  
  那位高手可以给出sql也可以,  
   
   
  问题点数:100、回复次数:9Top

1 楼zyj320621(小朱)回复于 2002-07-23 17:47:09 得分 0

什么怪事   怎么不说Top

2 楼handsome1234(我太菜了,)回复于 2002-07-23 17:49:52 得分 0

问题一,二,就是怪事啊Top

3 楼CoolSlob()回复于 2002-07-23 17:54:41 得分 10

问题1:  
  Select   A.A2   As   PM,Sum(A.A8)   As   CK,Sum(B.A8)   As   XS  
  From   CKLS   As   A   Left   Join   XSLS   As   B<---------你使用的是Left   Join  
  On   (A.A2=B.A2)   And   (A.A8=B.A8)    
  Group   By   A.A2    
   
  你可以先理解一下Left   Join,Right   Join,   Inner   Join之间的关系!!!  
   
  这不是怪事,!是你自己的SQL语句写错了!  
   
  问题2:我就没心事去看了,你列出的数据太乱了,呵呵:-)  
   
  Top

4 楼CoolSlob()回复于 2002-07-23 17:55:28 得分 10

问题1:  
  Select   A.A2   As   PM,Sum(A.A8)   As   CK,Sum(B.A8)   As   XS  
  From   CKLS   As   A   Left   Join   XSLS   As   B<---------你使用的是Left   Join  
  On   (A.A2=B.A2)   And   (A.A8=B.A8)    
  Group   By   A.A2    
   
  你可以先理解一下Left   Join,Right   Join,   Inner   Join之间的关系!!!  
   
  这不是怪事,!是你自己的SQL语句写错了!  
   
  问题2:我就没心事去看了,你列出的数据太乱了,呵呵:-)  
   
  Top

5 楼findcsdn(searchcsdn)回复于 2002-07-23 18:15:19 得分 30

试一试下面的sql语句如何;在access中应该是正确的。  
   
   
  select     b.a2,a.xs,b.ck   from   (select   a2,sum(a8)   as     xs     from   xsls   group   by   a2   )   a     right   join   (   select   a2,sum(a8)   as   ck   from   ckls   group   by   a2)   b   on   a.a2=b.a2Top

6 楼Bes96261(秋水孤鶩)回复于 2002-07-23 18:19:30 得分 10

樓上的結果應該是對的,因為使用Group   by   時作統計得出什麼所有的結果。Top

7 楼Bes96261(秋水孤鶩)回复于 2002-07-23 18:20:32 得分 10

打錯字了,Group   by   最好不要用在行與行作統計的時候Top

8 楼zyj320621(小朱)回复于 2002-07-23 18:28:01 得分 10

我看了你的SQL语句   肯定会有这样的结果   主要还是你对表Join理解的事  
  你用下列语句执行   再一点点地加上条件   看看变化  
  1  
  Select   A.A2   As   PM,   b.A2   as   PM1   ,Sum(A.A8)   As   CK,Sum(B.A8)   As   XS  
  From   CKLS   As   A   Left   Join   XSLS   As   B  
  On   (A.A2=B.A2)  
  Group   By   A.A2,b.a2  
   
  2  
  Select   distinct   A.A2   As   PM,Sum(A.A8)   As   CK,Sum(B.A8)   As   XS  
  From   CKLS   As   A   Left   Join   XSLS   As   B  
  On   (A.A2=B.A2)  
  Group   By   A.A2  
   
  3   加入下列方法试试  
  [   INNER   |   {   {   LEFT   |   RIGHT   |   FULL   }   [OUTER]   }   ]     JOIN    
  Top

9 楼chao_jian(猫)回复于 2002-07-23 19:28:30 得分 10

“以出库为基准,把出库和销售同名的货物作个统计sum()”  
   
  把Left   Join改成Inner   Join试试。Top

10 楼fermium(列御寇)回复于 2002-07-24 00:35:06 得分 10

问题2  
  你把Sum()和Group   By去掉,再数一下有多少条记录就明白了。  
  其实问题还是在Left上Top

相关问题

  • SQL怪事!!!!!!!!!!!!!!!!
  • sql * loader 怪事!
  • sql怪事
  • 怪事出现了
  • 高手请进!在VFP中使用SQL语句的怪事!
  • 怪事!sql语句问题
  • 怪事哦,SQL问题!
  • jbuilder2005注册出现的怪事??
  • CRectTracker 怪事,高手请进。
  • 怪事天天有!SQL SERVER 2000极限编程,有兴趣的进来瞧瞧!(在线)

关键词

  • 超薄
  • pm
  • sql
  • 套衫
  • 围巾
  • ckls
  • 扇贝网眼
  • 出库
  • 八字领长袖明门
  • 超薄精纺纯绒披肩

得分解答快速导航

  • 帖主:handsome1234
  • CoolSlob
  • CoolSlob
  • findcsdn
  • Bes96261
  • Bes96261
  • zyj320621
  • chao_jian
  • fermium

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo