Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共6 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:表查询如何实现?

1楼
lgz518 发表于: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楼
有点蓝 发表于: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查询表"


3楼
lgz518 发表于:2025/3/22 10:23:00
问题一:在同一个局网内用一个服务器下,多台或同一个局网内的所台有客户端的电脑都可以实现,多数据源多表联查?
问题二:多数据源多表联查是常规操作,还是特殊操作,尽量不使用?
由于用户和权限表在每项目,基本一样,只有业务表不一样,避免重写用户和权限表,
将用户和权限表放在一个数据源DB1,所有业务表放在一个数据源DB2,这种就可以避免重写用户和权限表,
问题三:MYSQL5.7好象不能多数据源多表联查?
4楼
有点蓝 发表于:2025/3/22 11:59:00
1、【多数据源多表联查】如果是指使用sql进行查询,和客户端没有半毛钱的关系,看2楼的说明

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

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

3、MYSQL不懂,没有研究过
5楼
lgz518 发表于: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楼
有点蓝 发表于: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
共6 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03125 s, 2 queries.