CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

在线求一SQL语句

楼主threemonths()2006-03-09 15:29:25 在 .NET技术 / ASP.NET 提问

有两张表,一个是表[aticle],里面有字段ID,topic,content;另一个是表[reply],里面有字段ID,article_id,reply。现在要求从表[reply]里求出前10条记录,同时找出每一条记录所对应的[article]表里的topic和ID,应该怎么写啊  
   
  谢谢~~~~~~~~~~~~~~~~~~ 问题点数:20、回复次数:10Top

1 楼Anders_lt(突破渴望)回复于 2006-03-09 15:46:34 得分 0

select   top   10   ,aticle.ID,aticle.topic   from     reply,aticle   where   reply.id=aticle.idTop

2 楼yzujjcb()回复于 2006-03-09 15:47:44 得分 20

有两张表,一个是表[aticle],里面有字段ID,topic,content;另一个是表[reply],里面有字段ID,article_id,reply。现在要求从表[reply]里求出前10条记录,同时找出每一条记录所对应的[article]表里的topic和ID,应该怎么写啊  
   
  select   a.*,b.topic,b.id   from   (select   top   10   *   from   reply)   as   a  
  left   join   aticle   as   b   on   a.article_id=b.idTop

3 楼tjxuemo(一汐)回复于 2006-03-09 15:51:50 得分 0

楼上的可以Top

4 楼threemonths()回复于 2006-03-09 16:17:16 得分 0

谢谢,不过还是不行,如果这儿的两张表都各自有自己[ID],那样的话如果在前台引用<%#   DataBinder.Eval(Container.DataItem,"ID")%>时,这里的ID是指哪个标的ID?  
   
  另外:  
  sql1="select   a.*,b.topic,b.id   from   (select   top   10   *   from   reply)   as   a  
  left   join   aticle   as   b   on   a.article_id=b.id"  
  与  
  sql2="select   a.*,b.topic,b.id   from   (select   top   10   *   from   reply)   as   a  
  innder   join   aticle   as   b   on   a.article_id=b.id"  
   
  这两个有什么区别啊?  
  谢谢Top

5 楼yzujjcb()回复于 2006-03-09 16:30:48 得分 0

那你可以把一个ID修改成另一个名字,在进行绑定。  
  如  
  sql2="select   a.*,b.topic,b.id   as   id123   from   (select   top   10   *   from   reply)   as   a  
  innder   join   aticle   as   b   on   a.article_id=b.id"  
  这样绑定的时候就是一个ID,一个是ID123,  
   
  下面说两者的区别  
  sql1="select   a.*,b.topic,b.id   from   (select   top   10   *   from   reply)   as   a  
  left   join   aticle   as   b   on   a.article_id=b.id"  
  与  
  sql2="select   a.*,b.topic,b.id   from   (select   top   10   *   from   reply)   as   a  
  innder   join   aticle   as   b   on   a.article_id=b.id"  
  一个左连接的问题,上面   a   left   join     b表,可以简单的理解:先把a表的数据都取出来,然后取b表的数据(筛选条件是b.id=a.id),这样有可能存在在a表里面的数据在b表里面没有,但是肯定会出来10条数据。  
  如果是a   Inner   join   b,那么就是一定要匹配,有可能出来的只有8条数据,因为在a表的10条数据里有2条在b表里是匹配不上的。Top

6 楼songxiaozhao(雨朋)回复于 2006-03-09 16:41:46 得分 0

楼上正解啊Top

7 楼lixiaocui_code(aaaa)回复于 2006-03-09 17:03:45 得分 0

select   top   10   ,aticle.ID,aticle.topic   from     reply,aticle   where   reply.id=aticle.id  
  就是它了Top

8 楼yang_road()回复于 2006-03-09 17:04:18 得分 0

select   top   10   *   from   aticle   a   left   join   reply   b   on   a.id=b.aticleidTop

9 楼threemonths()回复于 2006-03-09 19:40:21 得分 0

为题已解决!  
  非常感谢楼上各位。  
  谢谢yzujjcb,  
  不过对于   <1>   a   inner   join   b  
                    <2>   a   left   join   b  
  这两个还是没弄明白,对于    
  sql="select   a.*,b.*   from   (select   top   10   *   from   reply)   as   a  
  innder   join   aticle   as   b   on   a.articleid=b.id"  
    我是这么理解的:on后面的“a.articleid=b.id”是充分必要条件,也就是说搜得的纪录必须满足这个条件,反之如果不满足这个条件,则只有8条满足条件则显示8条记录,有1条则只显示一条记录。  
   
  而   a   inner   join   b   on   a,articleid=b.id   感觉也是这么理解,  
   
  能再详细说一下吗?非常谢谢!!Top

10 楼yzujjcb()回复于 2006-03-10 17:01:52 得分 0

Left   join   比如select   a.*,b.id   from   a   left   join     b   on   ...  
  我的理解是把a里面有的都拎出来,然后根据on后面的条件,将b里面的数据往上镶嵌,这样会产生10条数据,但是有可能b里面只有8条与之匹配,所以检索的10条记录里有2条记录b.id为NULL;  
   
  而Inner   join   比如select   a.*,b.id   from   a   Inner   join     b   on   ...  
  有可能a中有b,b中有a的数据,即满足充要条件的有6条,则会产生6条记录。  
   
  不知道这样理解是否正确。Top

相关问题

  • 一个sql语句,在线
  • 求一SQL语句,在线.
  • 一SQL语句?
  • 求一条SQL语句,在线等
  • 求一sql语句,在线等
  • SQL一个语句问题,在线等
  • 问一SQL语句,在线等
  • 寻求一条SQL语句,在线等!
  • 求一个SQL语句,在线等!
  • 求一条SQL语句,在线等

关键词

  • 字段
  • 数据
  • article
  • top
  • sql
  • aticle
  • reply
  • ainnder
  • topic
  • join

得分解答快速导航

  • 帖主:threemonths
  • yzujjcb

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo