在ADO使用SELECT語(yǔ)法3
發(fā)表時(shí)間:2024-06-15 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]接上一篇文章:ORDER BYORDER BY子句,可以設(shè)定排序的字段。在一個(gè)SQL表達(dá)式之中,ORDER BY子句通常放置于最后。 若要以遞減順序來(lái)進(jìn)行排序(Z~A,9 ~0),須于您要遞減排序的每一字段的尾部加DESC字。譬如:SELECT 姓名FROM 員工ORDER BY 工資 DE...
接上一篇文章:
ORDER BY
ORDER BY子句,可以設(shè)定排序的字段。
在一個(gè)SQL表達(dá)式之中,ORDER BY子句通常放置于最后。
若要以遞減順序來(lái)進(jìn)行排序(Z~A,9 ~0),須于您要遞減排序的每一字段的尾部加DESC字。譬如:
SELECT 姓名
FROM 員工
ORDER BY 工資 DESC, 年齡
表示[工資] 字段以遞減順序來(lái)進(jìn)行排序,[年齡] 字段以遞增順序來(lái)進(jìn)行排序。
ORDER BY子句中排序的字段,不可以包含MEMO字段類型或OLE對(duì)象類型,否則會(huì)發(fā)生錯(cuò)誤。
在ORDER BY子句之中包含多個(gè)的字段時(shí),首先以O(shè)RDER BY之后的第一個(gè)字段來(lái)進(jìn)行排序。然后,若在此字段之中有相同的資料記錄,才會(huì)以列第二字段來(lái)進(jìn)行排序,依此類推。
GROUP BY
GROUP BY將查詢的結(jié)果做統(tǒng)計(jì),語(yǔ)法如下:
SELECT fieldlist
FROM table
WHERE criteria
[GROUP BY groupfieldlist]
使用WHERE子句,可以設(shè)定不想要做統(tǒng)計(jì)的資料,而使用HAVING子句可以篩選已經(jīng)統(tǒng)計(jì)之后的字段。
不可以對(duì)MEMO字段類型或OLE對(duì)象類型的字段做統(tǒng)計(jì),否則會(huì)發(fā)生錯(cuò)誤。
譬如ASP程式rs22.asp如下,[SELECT 種類, Avg(價(jià)格) As 平均 From 產(chǎn)品 Group By 種類] 使用GROUP BY將查詢的結(jié)果做 [種類] 統(tǒng)計(jì),統(tǒng)計(jì)各個(gè)種類統(tǒng)計(jì)來(lái)平均價(jià)格Avg(價(jià)格):
<%
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Set rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "SELECT 種類, Avg(價(jià)格) As 平均 From 產(chǎn)品 Group By 種類"
Response.Write "<p>Avg(價(jià)格)"
rs2.Open SqlStr,conn1,1,1
Do while not rs2.EOF
Response.Write "<BR>" & rs2("種類") & ": " & rs2("平均")
rs2.MoveNext
Loop
rs2.Close %>
以上的 ASP程式rs22.asp,用戶端使用瀏覽器,瀏覽執(zhí)行的結(jié)果,顯示依據(jù) [種類] 統(tǒng)計(jì)來(lái)統(tǒng)計(jì)平均價(jià)格。
讓我們多看個(gè)例子,譬如ASP程式rs22.asp如下,[SELECT 種類, Sum(數(shù)量*價(jià)格) As 總計(jì) From 產(chǎn)品 Group By 種類] 使用GROUP BY將查詢的結(jié)果做 [種類] 統(tǒng)計(jì),統(tǒng)計(jì)各個(gè)種類的數(shù)量與價(jià)格相乘的總價(jià)Sum(數(shù)量*價(jià)格):
<%
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Set rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "SELECT 種類, Sum(數(shù)量*價(jià)格) As 總計(jì) From 產(chǎn)品 Group By 種類"
rs2.Open SqlStr,conn1,1,1
Response.Write "<p>Sum(數(shù)量*價(jià)格)"
Do while not rs2.EOF
Response.Write "<BR>" & rs2("種類") & ": " & rs2("總計(jì)")
rs2.MoveNext
Loop
rs2.Close %>
以上的 ASP程式rs22.asp,在用戶端使用瀏覽器,瀏覽執(zhí)行的結(jié)果,顯示依據(jù) [種類] 來(lái)統(tǒng)計(jì)總價(jià)。
Groupfieldlist為用以統(tǒng)計(jì)的字段名稱,最多為10個(gè)字段。
在groupfieldlist中字段名稱的順序,將決定統(tǒng)計(jì)層次,由最高至最低的層次來(lái)分組。
最后,譬如ASP程式rs22.asp如下,[SELECT 姓名,科目,Avg(分?jǐn)?shù)) As 平均 From 考試 Group By 姓名,科目] 使用GROUP BY將查詢的結(jié)果做依據(jù) [姓名] 和 [科目] 統(tǒng)計(jì),統(tǒng)計(jì)各個(gè)統(tǒng)計(jì)的 [平均] 分?jǐn)?shù)Avg(分?jǐn)?shù)):
<%
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Set rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "SELECT 姓名,科目,Avg(分?jǐn)?shù)) As 平均 From 考試 Group By 姓名,科目"
rs2.Open SqlStr,conn1,1,1
Response.Write "<p>Group By 姓名,科目"
Do while not rs2.EOF
Response.Write "<BR>" & rs2("姓名") & " " & rs2("科目") & " 平均: " & rs2("平均")
rs2.MoveNext
Loop
rs2.Close
%>
以上的 ASP程式rs22.asp,在用戶端使用瀏覽器,瀏覽執(zhí)行的結(jié)果,顯示依據(jù) [姓名] 和 [科目] 來(lái)統(tǒng)計(jì) [平均] 分?jǐn)?shù)。
學(xué)會(huì)了嗎?