以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  各位老师,关于多表查询表的问题【已解决,Don高手的SQL,各位狐友看看】  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=32246)

--  作者:gsnake
--  发布时间:2013/4/28 9:02:00
--  各位老师,关于多表查询表的问题【已解决,Don高手的SQL,各位狐友看看】
关于多表查询,害的一夜未眠,没有结果!请各位大师帮忙!!
我用了SQL ,也用了狐爸的查询表生成器!就是得不到结果!!各位大师抽空帮帮忙!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar
 
在压缩文件里,我做了一张表 “我想要的结果”
 

 

图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2013-5-16 11:23:27编辑过]

--  作者:gsnake
--  发布时间:2013/4/28 17:47:00
--  
看来都放假了
--  作者:Bin
--  发布时间:2013/4/28 17:50:00
--  
能不能说下你想干嘛.不明不白的.就发个文件.丢一下一句得不到结果. 
--  作者:gsnake
--  发布时间:2013/4/28 17:51:00
--  
我把想要的结果放到这个文件的一个表里了


--  作者:Bin
--  发布时间:2013/4/28 17:59:00
--  
你想要的是什么结果?图片点击可在新窗口打开查看
--  作者:gsnake
--  发布时间:2013/4/28 18:06:00
--  

bin老师!在一楼有啊!是这样的!压缩文件里!

“我想得到的查询”表是我手工做的,不是查询出来的,我就是想用SQL 或 狐爸的查询表生成器 得到这个结果  


--  作者:don
--  发布时间:2013/4/28 22:06:00
--  
Dim jb As new SQLJoinTableBuilder("统计表","入库明细")
Dim dt1 As fxDataSource
jb.AddTable("入库明细","入库编号","入库单","入库编号")
jb.AddExp("客户编号","客户编号")
jb.AddExp("客户名称","商品编号")
jb.AddExp("入库编号","{入库单}.入库编号")
jb.Addexp("存入商品","商品编号")
jb.Addexp("操作日期","存入日期")
jb.Addexp("入库数量","数量")
jb.Addexp("入库单价","单价")
jb.Addexp("入库金额","金额")
dt1 = jb.BuildDataSource()
jb = new SQLJoinTableBuilder("A1","兑换明细")
Dim dt2 As fxDataSource
jb.AddTable("兑换明细","兑换编号","兑换表","兑换编号")

jb.AddCols("客户编号","{兑换明细}.兑换编号")
jb.Addexp("兑换商品","商品编号")
jb.Addexp("操作日期","兑换日期")
jb.Addexp("兑换数量","数量")
jb.Addexp("兑换单价","单价")
jb.Addexp("兑换金额","金额")
dt2 = jb.BuildDataSource()
Dim nms As String() = {"客户编号","操作日期"} \'指定连接列
dt1.Combine(nms,dt2,nms)
dt1.Show("统计表") \'显示统计结果
Tables("统计表").StopRedraw
For Each r As Row In Tables("统计表").Rows
    Dim dr As DataRow = DataTables("客户信息").Find("客户编号 = \'" & r("客户编号") & "\'")
    If dr IsNot Nothing Then
        r("客户名称") = dr("客户名称")
    End If
Next
Tables("统计表").ResumeRedraw
Tables("统计表").sort="操作日期"
MainTable = Tables("统计表")


--  作者:gsnake
--  发布时间:2013/4/28 22:42:00
--  
don 真心的感谢!要是在一起!一定请你大餐一顿!万分感谢!!!万万分感谢!!!
--  作者:gsnake
--  发布时间:2013/4/29 7:58:00
--  
我想学一下SQL的写法:
我写了半天也没写出don的结果:各位研究一下

Select * from 
(Select  {客户信息}.客户编号,客户名称,{入库单}.入库编号,存入日期,商品编号,数量,单价 From ({入库明细} Inner JOIN {入库单} ON {入库单}.[入库编号] = {入库明细}.[入库编号]) Inner JOIN {客户信息} ON {客户信息}.[客户编号] = {入库单}.[客户编号]) As a 
  Inner JOIN 
(Select  {客户信息}.客户编号,{兑换表}.兑换编号,兑换日期,商品编号,数量,单价 From ({兑换明细} Inner JOIN {兑换表} ON {兑换表}.[兑换编号] = {兑换明细}.[兑换编号]) Inner JOIN {客户信息} ON {客户信息}.[客户编号] = {兑换表}.[客户编号]) As b on a.客户编号=b.客户编号

得到的结果不是don老师的!

--  作者:don
--  发布时间:2013/4/29 10:55:00
--  
仔細想想你要達到的結果:合并[入库明细]和[兑换明细],同時連接[入庫單][兌換表]及[客戶信息]三表對應信息,因此,單單JOIN是不能的,還要UNION才行!

因此7樓的代碼可能在[客户编号][操作日期]都相同時有可能有誤差:連接在同一行而不是分行顯示

SQL的:
Select b.客户编号,客户名称,b.入库编号,商品编号 as 存入商品,存入日期 as 操作日期,数量 As 入库数量,单价 As 入库单价,数量*单价 As 入库金额,\'\' As 兑换编号,\'\' as 兑换商品,\'\' As 兑换数量,\'\' As 兑换单价,\'\' As 兑换金额 From ({入库明细} a Inner JOIN {入库单} b ON a.入库编号 = b.入库编号) Inner JOIN {客户信息} c ON c.客户编号 = b.客户编号 

Union

Select b.客户编号,客户名称,\'\' As 入库编号,\'\' as 存入商品,兑换日期 as 操作日期,\'\' As 入库数量,\'\' As 入库单价,\'\' As 入库金额,\'\' As 兑换编号,商品编号 as 兑换商品,数量 As 兑换数量,单价 As 兑换单价,数量*单价 As 兑换金额 From ({兑换明细} a Inner JOIN {兑换表} b ON a.兑换编号 = b.兑换编号) Inner JOIN {客户信息} c ON c.客户编号 = b.客户编号

order by 客户编号,操作日期
[此贴子已经被作者于2013-4-29 11:48:03编辑过]