以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 表查询如何实现? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=196006) |
-- 作者: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 & " ; " |
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2025/3/22 10:23:00 -- 问题一:在同一个局网内用一个服务器下,多台或同一个局网内的所台有客户端的电脑都可以实现,多数据源多表联查? 问题二:多数据源多表联查是常规操作,还是特殊操作,尽量不使用? 由于用户和权限表在每项目,基本一样,只有业务表不一样,避免重写用户和权限表, 将用户和权限表放在一个数据源DB1,所有业务表放在一个数据源DB2,这种就可以避免重写用户和权限表, 问题三:MYSQL5.7好象不能多数据源多表联查?
|
-- 作者:有点蓝 -- 发布时间:2025/3/22 11:59:00 -- 1、【多数据源多表联查】如果是指使用sql进行查询,和客户端没有半毛钱的关系,看2楼的说明 2、不是特别必要,不要使用。不是数据库高手也不要使用 【避免重写用户和权限表】和使用多少个数据源没有任何关系,如果有问题也是开发人员没有做好功能控制导致,也就是开发的功能和代码有缺陷 3、MYSQL不懂,没有研究过
|
-- 作者: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 |
-- 作者:有点蓝 -- 发布时间: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 |