Foxtable(狐表)用户栏目专家坐堂 → 表查询如何实现?


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

主题:表查询如何实现?

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


加好友 发短信
等级:六尾狐 帖子:1367 积分:9419 威望:0 精华:0 注册:2019/6/13 9:57:00
表查询如何实现?  发帖心情 Post By:2025/3/22 9:48:00 [只看该作者]

SQL2008用ADO模式双数据源三表联查询如何实现?

DB1有“用户表”,其字段:用户名,用户ID,上级ID,DB2有”订单主表:其字段:单号,经办人,用户ID,,订单明细表:其字段:单号,料号,规格,数量,

需求:二个数据源,二表联查,下面代码报错,找不到DB1数据源和“用户表”,如何处理?
Dim db2 = HySqGl.DataBaseFactory.CreateDatabase("db1") '
Dim SqGl5 = "selecGt * from 用户表;" '
Dim dt5 As system.data.DataTable = db2.ExecuteDataSet(SqGl5).Tables(0)
dt5.TableName = "用户表"


Dim db = HySGql.DataBaseFactory.CreateDatabase("db2") '
    Dim SqGl2 = "SelecGt  a.*,b.KKID  " & _
    "From   " & _ 
    "订单主表 _tb   as  a   " & _ 
    "Inner Join    " & _ 
    "用户表   as  b  " & _ 
    "On  " & _ 
    "(a.用户ID = b.用户ID) " & _
    " Where " & _ 
    "b.KKID =" & _用户ID & " ; "

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


加好友 发短信
等级:超级版主 帖子:112919 积分:574976 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/3/22 9:56:00 [只看该作者]

在同一个电脑的SqlServer实例里的不同数据库才能使用sql一起关联查询。加上数据库名称即可。不同电脑的数据库无法关联查询


dim SqGl5 as string = "select * from db1某表 as a inner join db2数据库名称.dbo.db2某表 on a.xxx=b.xxx"
Dim db2 = HySqGl.DataBaseFactory.CreateDatabase("db1") '
Dim dt5 As system.data.DataTable = db2.ExecuteDataSet(SqGl5).Tables(0)
dt5.TableName = "xx查询表"



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


加好友 发短信
等级:六尾狐 帖子:1367 积分:9419 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2025/3/22 10:23:00 [只看该作者]

问题一:在同一个局网内用一个服务器下,多台或同一个局网内的所台有客户端的电脑都可以实现,多数据源多表联查?
问题二:多数据源多表联查是常规操作,还是特殊操作,尽量不使用?
由于用户和权限表在每项目,基本一样,只有业务表不一样,避免重写用户和权限表,
将用户和权限表放在一个数据源DB1,所有业务表放在一个数据源DB2,这种就可以避免重写用户和权限表,
问题三:MYSQL5.7好象不能多数据源多表联查?

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


加好友 发短信
等级:超级版主 帖子:112919 积分:574976 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/3/22 11:59:00 [只看该作者]

1、【多数据源多表联查】如果是指使用sql进行查询,和客户端没有半毛钱的关系,看2楼的说明

2、不是特别必要,不要使用。不是数据库高手也不要使用

避免重写用户和权限表】和使用多少个数据源没有任何关系,如果有问题也是开发人员没有做好功能控制导致,也就是开发的功能和代码有缺陷

3、MYSQL不懂,没有研究过

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


加好友 发短信
等级:六尾狐 帖子:1367 积分:9419 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2025/3/22 12:02:00 [只看该作者]

Dim db2 = HySqGl.DataBaseFactory.CreateDatabase("Xdb1") '
Dim SqGl5 = "selecGt * from 用户表;" '
Dim dt5 As system.data.DataTable = db2.ExecuteDataSet(SqGl5).Tables(0)
dt5.TableName = "用户表"


Dim db = HySGql.DataBaseFactory.CreateDatabase("Xdb2") '
    Dim SqGl2 = "SelecGt  a.*,b.KKID    From  订单主表    as  a   " & _
    "Inner Join   用户表   as  b " & _ 
    "On  (a.用户ID = b.用户ID)" & _ 
    " Where   b.KKID =" & _用户ID &  ;"
  Dim dt2 As system.data.DataTable = db.ExecuteDataSet(Sql2).Tables(0)
   Dim t2 As Table = e.Form.Controls("Table1").Table
   t2.datasource = dt2.Copy



上面代码,改为下面,报错提示:找不到 Xdb2.订单主表 ,如何改?
Dim db = HySGql.DataBaseFactory.CreateDatabase("Xdb2") '
    Dim SqGl2 = "SelecGt  a.*,b.KKID    From  Xdb2.订单主表   as  a   " & _
    "Inner Join   Xdb1.用户表   as  b " & _ 
    "On  (a.用户ID = b.用户ID)" & _ 
    " Where   b.KKID =" & _用户ID &  ;"
Dim  Xdb2 = HySqGl.DataBaseFactory.CreateDatabase("Xdb1") '
  Dim dt2 As system.data.DataTable = db.ExecuteDataSet(Sql2).Tables(0)
   Dim t2 As Table = e.Form.Controls("Table1").Table
   t2.datasource = dt2.Copy


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


加好友 发短信
等级:超级版主 帖子:112919 积分:574976 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/3/22 13:23:00 [只看该作者]

CreateDatabase("Xdb2") 使用的是Xdb2数据库,没有必要把这个数据库名称加进去。其它数据库名称和数据表之间要加上dbo

Dim db = HySGql.DataBaseFactory.CreateDatabase("Xdb2") '
    Dim SqGl2 = "SelecGt  a.*,b.KKID    From  订单主表   as  a   " & _
    "Inner Join   Xdb1.dbo.用户表   as  b " & _ 
    "On  (a.用户ID = b.用户ID)" & _ 
    " Where   b.KKID =" & _用户ID &  ;"
  Dim dt2 As system.data.DataTable = db.ExecuteDataSet(SqGl2 ).Tables(0)
   Dim t2 As Table = e.Form.Controls("Table1").Table
   t2.datasource = dt2.Copy

 回到顶部