首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 一个关于asp中多表查询的问题? [已结贴,结贴人:xtdenglei]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xtdenglei
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-03-18 08:47:33 楼主
    现有三个表,soke_class,soke_note,soke_article
    我先通过语名在:set rs=conn.execute("select zlid from soke_article order by addtime desc")
    然后查找表soke_note中列id等于rs("zlid")的记录,表soke_note中的列对应表soke_class中的class列,语法如下,错在那里?
    abc=rs(0)
    set rs1=conn.execute("select soke_class.class,soke_note.zhonglei from soke_note inner soke_class on soke_note.zhonglei=soke_class.id where id='"&zlid&"'")


    我的整段代码如下:
    <%set rs=conn.execute("select top 5 * from soke_article order by addtime desc")
        do while not rs.eof
      zlid=rs("zlid")
     
      set rs1=conn.execute("select soke_class.class,soke_note.zhonglei from soke_note inner soke_class on soke_note.zhonglei=soke_class.id where id='"&zlid&"'")
      response.Write rs1("soke_class.class")
    rs.movenext
    loop
      %>
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • luxu001207
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-03-18 08:51:431楼 得分:10
    select soke_class.class,soke_note.zhonglei from soke_note inner soke_class on soke_note.zhonglei=soke_class.id where id='"&zlid&"'"
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chinmo
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

      6

    发表于:2008-03-18 09:06:502楼 得分:0
    select soke_class.class,soke_note.zhonglei from soke_note inner soke_class on soke_note.zhonglei=soke_class.id where id='"&zlid&"'

    id字段类型如果是自动编号或者是数字型不能用单引号,直接双引号
    多表查询你可以试试
    select soke_note.id as nid,soke_article.zlid  as aid,soke_note.zhonglei,soke_class.class as ccalss,soke_class.id as cid where
    soke_note.zhonglei=soke_class.id and ,soke_note.id=soke_article.zlid
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xtdenglei
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-03-18 09:11:333楼 得分:0
    一楼的,还是不行,提示ON附近有语法错误.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • whiteamoon
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-03-18 09:33:424楼 得分:10
    select b.class,a.zhonglei from soke_note a
    left outer join soke_class b on a.zhonglei=b.id
    where a.id='"&zlid&"'

    or

    select class from soke_class
    where id in (
    select zhonglei from soke_note where id='"&zlid&"'
    )


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xtdenglei
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-03-18 09:36:115楼 得分:0
    真搞不清楚了,我把我表的结构放上来.
    表单名: soke_class  soke_article  soke_note
    表列名:   id          id            id      (都是自动编号)
          class        zlid        zhonglei
                          regname      number
                          register      regusername
                          addtime        addtime
    我要达到的目的是:按addtime查询article表,取最后添加的五条记录,显示zlid等于soke_noge表中的id(id要转换成soke_note中的zhonglei对应表的soke_class表中的class)

    那位高手帮忙写一下代码,对于多表查询我还没有试过.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xtdenglei
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-03-18 10:02:206楼 得分:0
    我按楼上的方法改了下,如下:
    <%set rs=conn.execute("select top 5 * from soke_article order by addtime desc")
          zlid=rs("zlid")
      do while not rs.eof
        rs1=conn.execute("select class from soke_class where id in(select id from soke_note where zhonglei='"&zlid&"')")
    response.Write rs1(0)
    response.Write" <br/>"
    rs.movenext
    loop

    %>
    还是不是,提示是:
    ADODB.Field 错误 '80020009'

    BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。

    /aaa.asp,行 0
    那位高手帮帮忙呀.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • huangchaosheng
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-03-18 10:28:497楼 得分:0
    <%
      set rs=conn.execute("select top 5 * from soke_article order by addtime desc")
      zlid=rs("zlid")
      if not (rs.bof and rs.eof) then 
      rs.movefirst
      do while not rs.eof
      rs1=conn.execute("select class from soke_class where id in(select id from soke_note where zhonglei='"&zlid&"')")
      response.Write rs1(0)
      response.Write" <br/> "
      rs.movenext
      loop
      end if           
      rs.close
      set rs=nothing
    %>
    添加内容看看是不是好了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xtdenglei
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-03-19 10:09:038楼 得分:0
    高手门帮帮忙呀,问题还没有解决.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xtdenglei
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-03-20 09:13:259楼 得分:0
    按四搂的方法搞定了,是自己把列名搞混了,谢了.结贴
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved