有两张表:[图书]、[借阅]
其中图书表中有字段 [图书条形码]、[图书名称]
而借阅表中有借阅记录,其中引用了图书条形码(作为外键)要求:根据这两张表用SQL语句生成一个Dataset(Top10 图书的记录)在DBGrid中显示,
其中要有[名次]、[图书条形码]、[图书名称]、[被借阅次数]这几个字段,
应该怎么写SQL字句?

解决方案 »

  1.   

    不详细吗?那我再说一下
    我有两张表,分别叫做[图书]、[借阅记录],其中[图书]表中有两个字段:[条形码]和[图书名称],而另一张表[借阅记录]中有三个字段:[图书条形码]、[读者编号]、[借阅登记时间],现在的问题是我要查找借阅次数最多的十本图书,在DBGrid中显示出来,要有[名次]、[图书条形码]、[图书名称]、[被借阅次数]这几项,当然,[名次]、[借阅次数]是不能从表中取得的,而要用语句生成。那么,我要查找的话用SQL语句应该怎么写?(PS:我的DBGrid是与adoquery联合的,面adoquery是在代码中动态生成的,其中用到.SQL.Add()。)
      

  2.   

    SELECT *
    FROM (SELECT TOP 10 a.[图书条形码],a.[图书名称],count(b.图书条形码) AS [被借阅次数]
    FROM 图书 AS a inner JOIN 借阅 AS b ON a.图书条
    形码=b.图书条形码
    GROUP BY [图书条形码],[图书名称])
    ORDER BY [被借阅次数] DESC;
      

  3.   

    好像不行,对了,我的数据为中ACCESS的,是不是不支持某些语法呀,或者adoquery不支持多重查询
      

  4.   

    SELECT *
    FROM (SELECT TOP 10 a.[图书条形码],a.[图书名称],count(b.[图书条形码]) AS [被借阅次数]
    FROM [图书] AS a inner JOIN [借阅] AS b ON a.[图书条形码]=b.[图书条形码]
    GROUP BY a.[图书条形码],a.[图书名称]) AS TTT
    ORDER BY [被借阅次数] DESC;
      

  5.   

    DebugXP() ,有办法加上去吗?
      

  6.   

    SELECT TOP 10 a.[图书条形码],a.[图书名称],count(b.图书条形码) AS [被借阅次数]
    FROM 图书 AS a inner JOIN 借阅 AS b ON a.图书条形码=b.图书条形码
    GROUP BY [图书条形码],[图书名称]
    ORDER BY [被借阅次数] DESC;