以文本方式查看主题 - 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 ,也用了狐爸的查询表生成器!就是得不到结果!!各位大师抽空帮帮忙!
!
在压缩文件里,我做了一张表 “我想要的结果”
此主题相关图片如下:未命名.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编辑过]
|