查看: 1184|回复: 13
|
SQL 很难写……可以帮忙一下吗?
[复制链接]
|
|
我的相关Table Structure
Books (BOOK_ID, BOOK_NAME, ......)
Borrowed Books (*BOOK_ID, *USER_ID, START_DATE, END_DATE, RETURNED)
现在我要找最多人借的书
但是我以下的SQL只能list出每本书有多少个人借了。
- SELECT BB.BOOK_ID, B.BOOK_NAME, Count(BB.BOOK_ID) As BOOK_COUNT
- FROM [Borrowed Books] BB, Books B
- WHERE BB.BOOK_ID = B.BOOK_ID
- GROUP BY BB.BOOK_ID, B.BOOK_NAME;
复制代码
我想在Group by后面加Having Max(BOOK_COUNT)但是不行,MS ACCESS XP给我一个Enter Parameter的InputBox,怎么solve?
[ 本帖最后由 V4ndrake 于 24-12-2005 12:48 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 24-12-2005 03:58 PM
|
显示全部楼层
SELECT TOP 1 BB.BOOK_ID, B.BOOK_NAME, Count(BB.BOOK_ID) As BOOK_COUNT
FROM [Borrowed Books] BB, Books B
WHERE BB.BOOK_ID = B.BOOK_ID
GROUP BY BB.BOOK_ID, B.BOOK_NAME
ORDER BY Count(BB.BOOK_ID) DESC |
|
|
|
|
|
|
|

楼主 |
发表于 25-12-2005 02:15 AM
|
显示全部楼层
原帖由 o1j2m3 于 24-12-2005 03:58 PM 发表
SELECT TOP 1 BB.BOOK_ID, B.BOOK_NAME, Count(BB.BOOK_ID) As BOOK_COUNT
FROM [Borrowed Books] BB, Books B
WHERE BB.BOOK_ID = B.BOOK_ID
GROUP BY BB.BOOK_ID, B.BOOK_NAME
ORDER BY Count(BB.BOOK_ID) DESC
红色的我还是第一次看到
因为等不及,所以我把整个目的改为显示几个比较高借书率的
就是加了青色那段
TOP 1的真的第一次看到,谢了…… |
|
|
|
|
|
|
|
发表于 25-12-2005 01:51 PM
|
显示全部楼层
原帖由 o1j2m3 于 24-12-2005 03:58 PM 发表
SELECT TOP 1 BB.BOOK_ID, B.BOOK_NAME, Count(BB.BOOK_ID) As BOOK_COUNT
FROM [Borrowed Books] BB, Books B
WHERE BB.BOOK_ID = B.BOOK_ID
GROUP BY BB.BOOK_ID, B.BOOK_NAME
ORDER BY Count(BB.BOOK_ID) ...
这个是Microsoft的SQL吗? 好像MySQL 5.0 和 Oracle都支持 Group By Max() |
|
|
|
|
|
|
|

楼主 |
发表于 25-12-2005 06:42 PM
|
显示全部楼层
Group by max应该可以,但是Group By Max(Count(xxxxx))好像不可以……连Max(Alias)好像也不可以
所以我才这么烦……
呵呵呵
我用MS Access XP的 |
|
|
|
|
|
|
|
发表于 25-12-2005 09:30 PM
|
显示全部楼层
原帖由 V4ndrake 于 25-12-2005 02:15 AM 发表
红色的我还是第一次看到
因为等不及,所以我把整个目的改为显示几个比较高借书率的
就是加了青色那段
TOP 1的真的第一次看到,谢了……
要谢就给钱~~haha
对不起~满肚子水~~要灌水~~haha
帮了人~灌水一贴应该no problem吧?haha |
|
|
|
|
|
|
|

楼主 |
发表于 25-12-2005 09:43 PM
|
显示全部楼层
原帖由 o1j2m3 于 25-12-2005 09:30 PM 发表
要谢就给钱~~haha
对不起~满肚子水~~要灌水~~haha
帮了人~灌水一贴应该no problem吧?haha
钱?冥纸你收不收?
怎么圣诞节没去wet上佳礼? |
|
|
|
|
|
|
|
发表于 25-12-2005 09:46 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 26-12-2005 03:00 AM
|
显示全部楼层
想請問你的book id 是 alphanumeric unique ID 嗎?如果是的話應該要如何 code.謝謝 |
|
|
|
|
|
|
|

楼主 |
发表于 26-12-2005 04:55 AM
|
显示全部楼层
原帖由 ReyesChuah 于 26-12-2005 03:00 AM 发表
想請問你的book id 是 alphanumeric unique ID 嗎?如果是的話應該要如何 code.謝謝
因为时间的关系,我们只能用numeric来做
呵呵呵,后天要交了
现在还在犯一些比较细节的问题…… |
|
|
|
|
|
|
|
发表于 26-12-2005 08:45 AM
|
显示全部楼层
原帖由 ReyesChuah 于 26-12-2005 03:00 AM 发表
想請問你的book id 是 alphanumeric unique ID 嗎?如果是的話應該要如何 code.謝謝
好奇怪的问题。。。code? 还不是一样~
。。。。还是你是他的朋友?? |
|
|
|
|
|
|
|

楼主 |
发表于 26-12-2005 02:17 PM
|
显示全部楼层
原帖由 o1j2m3 于 26-12-2005 08:45 AM 发表
好奇怪的问题。。。code? 还不是一样~
。。。。还是你是他的朋友??
可以说是刚刚才认识 |
|
|
|
|
|
|
|
发表于 27-12-2005 12:41 AM
|
显示全部楼层
原帖由 V4ndrake 于 26-12-2005 04:55 AM 发表
因为时间的关系,我们只能用numeric来做
呵呵呵,后天要交了
现在还在犯一些比较细节的问题……
呵呵,我最近在練習寫 management system,所以就選了個图书馆管理系统来写,而我刚遇到一些瓶颈,也就是alphanumeric unique id,虽然有别的论坛建议我用ISBN,问题是图书馆也会有旧书的,而比较旧的书,是没有ISBN,所以很头痛,也不懂要怎么写,我还是新手嘿,很多东西都不懂,找google也没什么收获。而刚好遇到有人开关于这方面的版就直接问了,所以想问问有人懂吗?
Dim strcmd As SqlClient.SqlCommand
Dim ID As Integer
Dim value As String
strcon.Open()
strcmd = New SqlClient.SqlCommand("select isnull(max(" & IDFields & " ),'" & DefaultID & "') from " & tbl, strcon)
Dim myReader As SqlClient.SqlDataReader = strcmd.ExecuteReader()
myReader.Read()
ID = Convert.ToInt32((myReader.GetValue(0).ToString()).Substring(3, 5)) + 1
myReader.Close()
value = prefix & ID
strcon.Close()
当我的数据库里的id 有 A1 是,如果我想要取回 prefix B 的id,它只能回给我B2而不是B1,我知道问题在那里,就是不懂怎么解决。 |
|
|
|
|
|
|
|
发表于 27-12-2005 07:44 PM
|
显示全部楼层
无论如何,我已经解决了, 只需要
strcmd = New SqlClient.SqlCommand("select isnull(max(" & IDFields & " ),'" & DefaultID & "') from books wher ID = '" & DefaultID & "'" , strcon)
浪费了我那么多天 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|