Foxtable(狐表)用户栏目专家坐堂 → INNER JOIN


  共有3247人关注过本帖树形打印复制链接

主题:INNER JOIN

帅哥哟,离线,有人找我吗?
bagabaga
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:138 积分:1325 威望:0 精华:0 注册:2014/3/10 19:43:00
INNER JOIN  发帖心情 Post By:2014/8/13 16:55:00 [只看该作者]

这段代码搞了几天了,搞不定,特来请教
    Dim Multi As String = e.Table.Current("Fk") 
    Dim Values() As String
    Dim sql As String =""
    Values = Multi.split("/")

    If e.Table.Current("Xh") <> ""
     '   MessageBox.Show(Values(2))
        sql = "Select RcjBm as 人材机编码,Mc as 名称,Dw as 单位,Rcjhl As 含量,Rcjhj as 合计 FROM (SELECT Rcjid,Rcjhl,Rcjhj From {QdxrcjhlMx} where Fk = '"  & Values(2) & "') as a INNER JOIN {RcjhzMx} as b ON  b.RcjId = a.RcjId "
    Else
   '     MessageBox.Show(Values(3))
        sql = "Select RcjBm as 人材机编码,Mc as 名称,Dw as 单位,Rcjhl As 含量,Rcjhj as 合计 FROM (SELECT Rcjid,Rcjhl,Rcjhj From {QdxdercjhlMx} where Fk = '"  & Values(3) & "') as a INNER JOIN {RcjhzMx} as b ON  b.RcjId = a.RcjId "
    End If

    If sql <> ""
    Dim b As New GroupTableBuilder("统计表1",sql) 
图片点击可在新窗口打开查看此主题相关图片如下:捕获.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:代码.rar

    b.Groups.AddDef("人材机编码") 
    b.Groups.AddDef("名称") 
    b.Groups.AddDef("单位") 
    b.Groups.AddDef("含量") 
    b.Totals.AddDef("合计")
    b.VerticalTotal = True
'    b.Build()
   Dim dr As Table = Tables("清单_Table17")
   dr.DataSource   = b.BuildDataSource()
    For Each cc As Col In dr.Cols
        If cc.Name = "名称"
            cc.Width =80
        Else
            cc.Width =60
        End If
    Next
    End If
End If

1、先从当前表{Qdmx}中读取列Fk字符串
2、判断当前Row列(Xh)是不是为空,不为空,取From {QdxrcjhlMx},Select FK = 字符串(2),
3、为空From {QdxdercjhlMx} ,Select FK = 字符串(3)
4、 INNER JOIN {RcjhzMx} 读取Mc、RjcBM

结果如下图,问题是取出的结果不满足Select FK = 字符串(2)或Select FK = 字符串(3),多了别的内容,请教是什么原因,代码附上


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/13 17:15:00 [只看该作者]

 呃,代码没有错,有可能是你逻辑有问题或者数据有问题。

 

 比如 FK = 8,人材机id有如下 81 83 90 101 106 110 112 114,那么匹配【RcjhzMx】表的时候,就匹配了对应的数据,而你【RcjhzMx】有两个重复的Id 81、83、90等

 

 所以数据是没有错的,但不知道你要取的是什么数据。


 回到顶部
帅哥哟,离线,有人找我吗?
bagabaga
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:138 积分:1325 威望:0 精华:0 注册:2014/3/10 19:43:00
  发帖心情 Post By:2014/8/13 19:29:00 [只看该作者]

谢谢,{RcjhzMx}是有二个值,如果要对应条件Fk1=1, INNER JOIN {RcjhzMx} as b ON  b.RcjId = a.RcjId 这一句该怎么写 

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/13 19:34:00 [只看该作者]

If e.Table.Current("Xh") <> ""
     '   MessageBox.Show(Values(2))
        sql = "Select RcjBm as 人材机编码,Mc as 名称,Dw as 单位,Rcjhl As 含量,Rcjhj as 合计 FROM (SELECT Rcjid,Rcjhl,Rcjhj From {QdxrcjhlMx} where Fk = '"  & Values(2) & "') as a INNER JOIN {RcjhzMx} as b ON  b.RcjId = a.RcjId where fk1 = '1'"
    Else
   '     MessageBox.Show(Values(3))
        sql = "Select RcjBm as 人材机编码,Mc as 名称,Dw as 单位,Rcjhl As 含量,Rcjhj as 合计 FROM (SELECT Rcjid,Rcjhl,Rcjhj From {QdxdercjhlMx} where Fk = '"  & Values(3) & "') as a INNER JOIN {RcjhzMx} as b ON  b.RcjId = a.RcjId  where fk1 = '1'"
    End If

 回到顶部