inner join 多表查询,这句话怎么会报错?

parsely 2002-12-14 09:45:46
我有个怪问题,想请教大家:

我用个多表查询的语句,如下:
<%
set rs=server.createobject("ADODB.recordset")
sql="select * from ttt inner join zyinfo on ttt.zwid=zyinfo.zwid inner join hyinfo on zyinfo.zwid=hyinfo.zwid"
rs.open sql,conn,1,1
%>


可是IE就是报错,说 sql="select * from ttt inner join zyinfo on ttt.zwid=zyinfo.zwid inner join hyinfo on zyinfo.zwid=hyinfo.zwid" 这句话有错

这句话我是做了3个表(ttt, zyinfo, hyinfo)的连接,当我对这3个表的任2个表做这种连接时,均不报错。怎么就当我把这3个表连起来会出错呢?上面那句话有错吗?在线等待!!!
...全文
125 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
逍遥小贼 2002-12-15
  • 打赏
  • 举报
回复
你在sql server中建立一个视图,将这3张表中的用zwid字段进行内联,假设取名为V_aa,这个用企业管理器就可以解决
那么:
sql="select * from V_aa"
annkie 2002-12-14
  • 打赏
  • 举报
回复
你把你的sql语句先放到sql server查询分析器执行一下,看什么问题。
或者你把你的文件发给我,我帮你看看。
annkie@sina.com
parsely 2002-12-14
  • 打赏
  • 举报
回复
以上就是报的错
parsely 2002-12-14
  • 打赏
  • 举报
回复
本页无法显示
试图访问的网页出现问题,无法显示。

--------------------------------------------------------------------------------

请尝试以下方法:

单击 刷新按钮或者梢候再试。

打开 127.0.0.1 主页,然后查找与所需信息相关的链接。
HTTP 500.100 - 内部服务器错误 - ASP 错误
Internet 信息服务

--------------------------------------------------------------------------------

技术信息(适用于支持人员)

错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
/newrczx/testsearch.asp, 第 7 行


浏览器类型:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705)

页:
GET /newrczx/testsearch.asp

时间:
2002年12月14日, 22:54:12


详细信息:
Microsoft 支持

这个 newrczx/testsearch.asp, 第 7 行 ,就是 rs.open sql,conn,1,1
annkie 2002-12-14
  • 打赏
  • 举报
回复
试试:
select * from zyinfo left join ttt on ttt.zwid=zyinfo.zwid left join hyinfo on zyinfo.zwid=hyinfo.zwid
报什么样的错?
parsely 2002-12-14
  • 打赏
  • 举报
回复
help!!
parsely 2002-12-14
  • 打赏
  • 举报
回复
上面的答案根本不通,还是说有错
annkie 2002-12-14
  • 打赏
  • 举报
回复
select * from zyinfo inner join ttt on ttt.zwid=zyinfo.zwid inner join hyinfo on zyinfo.zwid=hyinfo.zwid
parsely 2002-12-14
  • 打赏
  • 举报
回复
这3个表里均有 zwid 这个字段,并且都只有一条记录,应该不会出问题啊?!
((IDisposable)new A()).Dispose(); /// /// 利用传进来的sql语句查新数据库 /// /// sql语句 /// public string QuerySingle(string sql) { string single = null; using (OleDbConnection connection = new OleDbConnection(str)) { using (OleDbCommand command = new OleDbCommand(sql, connection)) { try { connection.Open(); object obj = command.ExecuteScalar(); if (obj != null) { single = command.ExecuteScalar().ToString(); } } catch { } } } return single; } /// /// 返回查询到的行数 /// /// /// public int Execute(string sql) { int result = 0; using (OleDbConnection connection = new OleDbConnection(str)) { using (OleDbCommand command = new OleDbCommand(sql,connection)) { try { connection.Open(); result = command.ExecuteNonQuery(); } catch { } } } return result; } //读记事本 FileStream fs = File.OpenRead(@"C:\Users\Administrator\Desktop\1.txt"); StreamReader sr = new StreamReader(fs, Encoding.Default); string s = sr.ReadLine(); string upStr = File.ReadAllText(@"C:\Users\Administrator\Desktop\1.txt", Encoding.Default); MessageBox.Show(upStr); sr.Close(); fs.Close(); //写记事本 FileStream fs = File.Create(@"C:\Users\Administrator\Desktop\1.txt"); StreamWriter sw = new StreamWriter(fs); sw.WriteLine("你的名字"); sw.Close(); fs.Close(); //messageBox控件 确定和取消 DialogResult dr=MessageBox.Show("确认删除吗?", "提示", MessageBoxButtons.OKCancel); if (dr == DialogResult.OK) { //用户选择确认的操作 MessageBox.Show("您选择的是【确认】"); } else if (dr == DialogResult.Cancel) { //用户选择取消的操作 MessageBox.Show("您选择的是【取消】"); } DialogResult result=MessageBox.Show("确定重新登录?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (result == DialogResult.Yes) { //确定编码 }else if(result == DialogResult.No) { //取消编码 } 首先,ArrayList集合和List都是非静态类,使用时都必须先实列化。 ArrayList类似一个数组,但比数组优越的是它的长度大小可变,并且可以存放不同类型的变量,包括值类型和引用类型。 常用方法如下: 1、Add():方法用于添加一个元素到当前列的末尾 2、AddRange():方法用于添加一批元素(数组或者集合)到列的末尾 3、Remove():方法用于删除一个元素,通过元素本身的引用来删除,填什么删什么 4、RemoveAt():方法用于删除一个元素,通过索引值来删除 5、RemoveRange():用于删除一批元素,通过指定开始的索引和删除的数量来删除 6、Insert(int index,value):用于添加一个元素到指定位置,列后面的元素依次往后移 7、InsertRange(int index,values):用于从指定位置开始添加一批元素,列后面的元素依次往后移动 8、Contains():用于查看集合中是否包含所给元素 VS2017专业版和企业版激活密钥 需要的请自取~ Enterprise: NJVYC-BMHX2-G77MM-4XJMR-6Q8QF Professional: KBJFW-NXHK6-W4WJM-CRMQB-G3CDH 交通银行:622262 1210005830359 开户行:虹桥支行 开户人:王彬 邮寄地址:北京市大兴区西红门镇五连环工业园区鼎业路11号利亚德电视剧技术有限公司 收件人:王彬 电:15022681976 select 单号 ,收入 = case when 收入>0 then 收入 else 0 end ,支出 = case when 收入>0 then 0 else 收入* -1 end from test select teamName,胜=sum( case when 胜利 end ),负 from TeamScore group by teamName select teamName,第1赛季得分 = case when seasonName = '第1赛季得分' then Score end ,第2赛季得分=case when seasonName = '第2赛季得分' then Score end ,第3赛季得分=case when seasonName = '第3赛季得分' then Score end from NBAScore group by teamName select studentld,语文=case when studentld = 001 then (sel ) end ,数学,英语 from table group by studentld select 商品编号,商品名称 ,王大销售数量=sum(case when 销售员 = 王大 then 销售数量 end) ,刘七销售数量=sum(case when 销售员 = 刘七 then 销售数量 end) ,张三销售数量=sum(case when 销售员 = 张三 then 销售数量 end) ,李四销售数量=sum(case when 销售员 = 张三 then 销售数量 end) ,张武销售数量=sum(case when 销售员 = 张三 then 销售数量 end) from MyOrderes group by 商品名称 -------分页 select top 7 * from table where ID not in (select top (7*(5-1)) from table order by ID asc) order by ID select TSName,TsAdderss from Tblstudent where tSid not in (select tSld from TbScroe) select t1.EmployeeID 员工编号,t1.FirstName 员工姓名,t2.FirstName 上司姓名 from Employee as t1 inner join Employee as t2 on t1.EmployeeID = t2.ReportsTo --------创建视图 create View 视图名称 as --要执行的sql语句 select TSName,TsAdderss from Tblstudent where tSid not in (select tSld from TbScroe) --执行视图 select * from 视图名称 --set和select的区别 大部分情况用set就可以,set不能将返回多个值获取到,相对严禁 select可以将获取返回的多个结果的最后一条,相对灵活 --事务 begin transaction //开启一个事务 declare @sum int = 0 //创建一个变量,记录sql语句次数 sql语句.................... set @sum = @sum + @@error //如果有一天sql语句@@error将记录为1 sql语句.................... set @sum = @sum + @@error //如果有一天sql语句@@error将记录为1 sql语句.................... set @sum = @sum + @@error //如果有一天sql语句@@error将记录为1 if@sum<> 0 //如果不为0,说明有SQL语句执行误 begin rollback //将事务回滚到执行之前 end else begin commit //SQL语句执行没有误就提交事务 end --存储过程(无参无返回值) create procedure user //创建一个存储过程 as begin print 'Hellow world' end exec user //执行一个存储过程 --存储过程(带参数的) create procedure user //创建一个存储过程 @NAME nvarchar(50) //创建变量,数据类型及初始值 .................. //创建变量,数据类型及初始值 .................. //创建变量,数据类型及初始值 .................. //创建变量,数据类型及初始值 as begin select @NAME from table end exec user @NAME=王彬,@AGE=29 create procedure user @NAME nvarchar(20) @AGE int as begin select * from table where NAME = @NAME and AGE = @AGE end exec user @NAME = '男',@AGE = 15 select 单号 ,收入 = case when 收入>0 then 收入 else 0 end ,支出 = case when 收入>0 then 0 else 收入* -1 end from test select teamName,胜=sum( case when 胜利 end ),负 from TeamScore group by teamName select teamName,第1赛季得分 = case when seasonName = '第1赛季得分' then Score end ,第2赛季得分=case when seasonName = '第2赛季得分' then Score end ,第3赛季得分=case when seasonName = '第3赛季得分' then Score end from NBAScore group by teamName select studentld,语文=case when studentld = 001 then (sel ) end ,数学,英语 from table group by studentld select 商品编号,商品名称 ,王大销售数量=sum(case when 销售员 = 王大 then 销售数量 end) ,刘七销售数量=sum(case when 销售员 = 刘七 then 销售数量 end) ,张三销售数量=sum(case when 销售员 = 张三 then 销售数量 end) ,李四销售数量=sum(case when 销售员 = 张三 then 销售数量 end) ,张武销售数量=sum(case when 销售员 = 张三 then 销售数量 end) from MyOrderes group by 商品名称 --分页 select top 7 * from table where ID not in (select top (7*(5-1)) from table order by ID asc) order by ID select TSName,TsAdderss from Tblstudent where tSid not in (select tSld from TbScroe) select t1.EmployeeID 员工编号,t1.FirstName 员工姓名,t2.FirstName 上司姓名 from Employee as t1 inner join Employee as t2 on t1.EmployeeID = t2.ReportsTo --创建视图 create View 视图名称 as --要执行的sql语句 select TSName,TsAdderss from Tblstudent where tSid not in (select tSld from TbScroe) --执行视图 select * from 视图名称 --set和select的区别 大部分情况用set就可以,set不能将返回多个值获取到,相对严禁 select可以将获取返回的多个结果的最后一条,相对灵活 --事务 begin transaction //开启一个事务 declare @sum int = 0 //创建一个变量,记录sql语句次数 sql语句.................... set @sum = @sum + @@error //如果有一天sql语句@@error将记录为1 sql语句.................... set @sum = @sum + @@error //如果有一天sql语句@@error将记录为1 sql语句.................... set @sum = @sum + @@error //如果有一天sql语句@@error将记录为1 if@sum<> 0 //如果不为0,说明有SQL语句执行误 begin rollback //将事务回滚到执行之前 end else begin commit //SQL语句执行没有误就提交事务 end --存储过程(无参无返回值) create procedure user //创建一个存储过程 as begin print 'Hellow world' end exec user //执行一个存储过程 --存储过程(带参数的) go //示批处理的第一句 create procedure user //创建一个存储过程 @NAME nvarchar(50) //创建变量,数据类型及初始值 .................. //创建变量,数据类型及初始值 .................. //创建变量,数据类型及初始值 .................. //创建变量,数据类型及初始值 as begin select @NAME from table end create procedure user @NAME nvarchar(20) @AGE int as begin select * from table where NAME = @NAME and AGE = @AGE end exec user @NAME = '男',@AGE = 15 ---分页存储过程 go create procedure fenye @countpize int //总页数 @everpize int //每页多少条数据 @sumpize //总页数 @pazeindex //当前页数 begin select * from table where betweem ((@pazeindex-1)*@everpize)+1 and @pazeindex*@everpize set @sumpize =(select cuont(*) from table) //总条数 set @countpize = @sumpize/@everpize //总页数 end ((IDisposable)new A()).Dispose(); /// /// 利用传进来的sql语句查新数据库 /// /// sql语句 /// public string QuerySingle(string sql) { string single = null; using (OleDbConnection connection = new OleDbConnection(str)) { using (OleDbCommand command = new OleDbCommand(sql, connection)) { try { connection.Open(); object obj = command.ExecuteScalar(); if (obj != null) { single = command.ExecuteScalar().ToString(); } } catch { } } } return single; } /// /// 返回查询到的行数 /// /// /// public int Execute(string sql) { int result = 0; using (OleDbConnection connection = new OleDbConnection(str)) { using (OleDbCommand command = new OleDbCommand(sql,connection)) { try { connection.Open(); result = command.ExecuteNonQuery(); } catch { } } } return result; } //读记事本 FileStream fs = File.OpenRead(@"C:\Users\Administrator\Desktop\1.txt"); StreamReader sr = new StreamReader(fs, Encoding.Default); string s = sr.ReadLine(); string upStr = File.ReadAllText(@"C:\Users\Administrator\Desktop\1.txt", Encoding.Default); MessageBox.Show(upStr); sr.Close(); fs.Close(); //写记事本 FileStream fs = File.Create(@"C:\Users\Administrator\Desktop\1.txt"); StreamWriter sw = new StreamWriter(fs); sw.WriteLine("你的名字"); sw.Close(); fs.Close(); //messageBox控件 确定和取消 DialogResult dr=MessageBox.Show("确认删除吗?", "提示", MessageBoxButtons.OKCancel); if (dr == DialogResult.OK) { //用户选择确认的操作 MessageBox.Show("您选择的是【确认】"); } else if (dr == DialogResult.Cancel) { //用户选择取消的操作 MessageBox.Show("您选择的是【取消】"); } DialogResult result=MessageBox.Show("确定重新登录?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (result == DialogResult.Yes) { //确定编码 }else if(result == DialogResult.No) { //取消编码 } 首先,ArrayList集合和List都是非静态类,使用时都必须先实列化。 ArrayList类似一个数组,但比数组优越的是它的长度大小可变,并且可以存放不同类型的变量,包括值类型和引用类型。 常用方法如下: 1、Add():方法用于添加一个元素到当前列的末尾 2、AddRange():方法用于添加一批元素(数组或者集合)到列的末尾 3、Remove():方法用于删除一个元素,通过元素本身的引用来删除,填什么删什么 4、RemoveAt():方法用于删除一个元素,通过索引值来删除 5、RemoveRange():用于删除一批元素,通过指定开始的索引和删除的数量来删除 6、Insert(int index,value):用于添加一个元素到指定位置,列后面的元素依次往后移 7、InsertRange(int index,values):用于从指定位置开始添加一批元素,列后面的元素依次往后移动 8、Contains():用于查看集合中是否包含所给元素 https://pan.baidu.com/s/1LCfl5sPCb-HfQmL0Chjvmg#list/path=/ syll VS2017专业版和企业版激活密钥 需要的请自取~ Enterprise: NJVYC-BMHX2-G77MM-4XJMR-6Q8QF Professional: KBJFW-NXHK6-W4WJM-CRMQB-G3CDH 交通银行:622262 1210005830359 开户行:虹桥支行 开户人:王彬 邮寄地址:北京市大兴区西红门镇五连环工业园区鼎业路11号利亚德电视剧技术有限公司 收件人:王彬 电:15022681976 /// /// 利用传进来的sql语句查新数据库 /// /// sql语句 /// public string QuerySingle(string sql) { string single = null; using (OleDbConnection connection = new OleDbConnection(str)) { using (OleDbCommand command = new OleDbCommand(sql, connection)) { try { connection.Open(); object obj = command.ExecuteScalar(); if (obj != null) { single = command.ExecuteScalar().ToString(); } } catch { } } } return single; }

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧