以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何使用多表查询  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=8600)

--  作者:lihe60
--  发布时间:2010/11/16 8:34:00
--  如何使用多表查询

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.CommandText = " SELECT * FROM {表B} INNER JOIN {表C} ON {表B}.第一列 = {表C} .第一列"
dt = cmd.ExecuteReader()
For Each dr As DataRow In dt.datarows
    Output.show(dr("第一列"))
Next

 

在命令窗口执行此代码,为什么不出结果?


--  作者:狐狸爸爸
--  发布时间:2010/11/16 8:47:00
--  

说明没有符合条件的行。


--  作者:lihe60
--  发布时间:2010/11/16 9:13:00
--  
这是附件,条件明明是符合的,但为什么没有结果?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


--  作者:lihe60
--  发布时间:2010/11/16 9:30:00
--  
以下是引用狐狸爸爸在2010-11-16 8:47:00的发言:

说明没有符合条件的行。

贺老师,如何修正代码?

 

 

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.CommandText = " SELECT * FROM {表B} INNER JOIN {表C} ON {表B}.第一列 = {表C}.第一列"
dt = cmd.ExecuteReader()
For Each dr As DataRow In dt.datarows
messagebox.show(dr("第一列"))
Next

[此贴子已经被作者于2010-11-16 9:30:27编辑过]

--  作者:lihe60
--  发布时间:2010/11/16 9:50:00
--  
盼大家献计献策
--  作者:狐狸爸爸
--  发布时间:2010/11/16 9:54:00
--  

你的表B、表C的结构不同,所以查询之后不存在名称为"第一列"的列,否则这"第一列"到底是表B的还是表C的?

 

对于同名的列,应该明确来源表:

 

SELECT {表B}.第一列,{表C}.第二列  FROM {表B} INNER JOIN {表C} ON {表B}.第一列 = {表C}.第一列

 

 


--  作者:lihe60
--  发布时间:2010/11/16 10:09:00
--  

运行表B中的窗口,表C的记录为什么查不到呢?

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目8.table


--  作者:狐狸爸爸
--  发布时间:2010/11/16 10:35:00
--  

我测试执行了。

Foxtable有一个SQL执行窗口,可以直接执行Select语句,很方便,多测试,多实验


--  作者:lihe60
--  发布时间:2010/11/16 10:45:00
--  
以下是引用狐狸爸爸在2010-11-16 10:35:00的发言:

我测试执行了。

Foxtable有一个SQL执行窗口,可以直接执行Select语句,很方便,多测试,多实验

经多次测试,此代码是可以用的。但必须第一列的数据相同的才输出,数据不同的不能输出。

若把表B和表C的所有数据有条件(按字段或表达式)多表查询,这样的代码怎么写。merger是可以实现的,但速度可能较慢。

[此贴子已经被作者于2010-11-16 10:45:34编辑过]

--  作者:lihe60
--  发布时间:2010/11/16 12:13:00
--  

前几天,一位老兄说用了一百多个表,不知这位老兄是怎么实现多表查询的?