استخدام بناء جملة SELECT الثلاثة في ADO
الكاتب:Eve Cole
وقت التحديث:2009-05-30 19:54:33
استمرارا للمقال السابق:
الطلب حسب
جملة ORDER BY، يمكنك تعيين حقل الفرز.
في تعبير SQL، عادةً ما يتم وضع جملة ORDER BY في الأخير.
إذا كنت تريد الفرز بترتيب تنازلي (Z~A، 9~0)، فيجب عليك إضافة كلمة DESC في نهاية كل حقل تريد فرزه بترتيب تنازلي. على سبيل المثال:
حدد الاسم
من الموظفين
الطلب حسب الراتب DESC والعمر
يشير إلى أن الحقل [الراتب] قد تم فرزه بترتيب تنازلي، وأنه تم فرز الحقل [العمر] بترتيب متزايد.
لا يمكن أن تحتوي الحقول التي تم فرزها في جملة ORDER BY على أنواع حقول MEMO أو أنواع كائنات OLE، وإلا سيحدث خطأ.
عندما يتم تضمين حقول متعددة في عبارة ORDER BY، يتم استخدام الحقل الأول بعد ORDER BY للفرز. وبعد ذلك، إذا كانت هناك سجلات بيانات متطابقة في هذا الحقل، فسيتم استخدام الحقل الثاني للفرز، وهكذا.
المجموعة حسب
ستقوم GROUP BY بإجراء إحصائيات حول نتائج الاستعلام، ويكون بناء الجملة كما يلي:
حدد القائمة الميدانية
من الجدول
حيث المعايير
[المجموعة حسب قائمة حقول المجموعة]
باستخدام جملة WHERE، يمكنك تعيين البيانات التي لا تريد حسابها، وباستخدام جملة HAVING، يمكنك تصفية الحقول التي تم حسابها بالفعل.
لا يمكن إجراء الإحصائيات على الحقول من نوع حقل MEMO أو نوع كائن OLE، وإلا سيحدث خطأ.
على سبيل المثال، برنامج ASP rs22.asp هو كما يلي، [SELECT Category, Avg (Price) As Average From Product Group By Category] استخدم GROUP BY لعمل إحصائيات [Category] على نتائج الاستعلام، وحساب إحصائيات كل فئة لمتوسط السعر متوسط (السعر):
<%
تعيين conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
تعيين rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "حدد الفئة، متوسط (السعر) كمتوسط من مجموعة المنتجات حسب الفئة"
الاستجابة.اكتب "<p>متوسط(السعر)"
rs2.Open SqlStr,conn1,1,1
افعل بينما لا rs2.EOF
الاستجابة.اكتب "<BR>" & rs2("kind") & ": " & rs2("متوسط")
rs2.MoveNext
حلقة
rs2.Close%>
بالنسبة لبرنامج ASP أعلاه rs22.asp، يستخدم العميل متصفحًا لتصفح نتائج التنفيذ وعرض متوسط السعر بناءً على إحصائيات [الفئة].
دعونا نلقي نظرة على مثال، برنامج ASP rs22.asp كما يلي، [SELECT Category, Sum(Quantity*Price) As Total From Product Group By Category] استخدم GROUP BY لإنشاء إحصائيات [Category] في الاستعلام. النتائج، وحساب كل فئة مجموع السعر الإجمالي (الكمية * السعر) مضروبا في الكمية والسعر:
<%
تعيين conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
تعيين rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "حدد الفئة، مجموع(الكمية*السعر) كإجمالي من مجموعة المنتجات حسب الفئة"
rs2.Open SqlStr,conn1,1,1
Response.اكتب "<p>Sum(quantity*price)"
افعل بينما لا rs2.EOF
الاستجابة.اكتب "<BR>" & rs2("الفئة") & ": " & rs2("total")
rs2.MoveNext
حلقة
rs2.Close%>
بالنسبة لبرنامج ASP أعلاه rs22.asp، استخدم المتصفح الموجود على العميل لتصفح نتائج التنفيذ وعرض السعر الإجمالي بناءً على [الفئة].
Groupfieldlist هو اسم الحقول المستخدمة للإحصائيات، بحد أقصى 10 حقول.
سيحدد ترتيب أسماء الحقول في قائمة حقول المجموعة المستوى الإحصائي، من المستوى الأعلى إلى المستوى الأدنى.
وأخيرًا، على سبيل المثال، برنامج ASP rs22.asp هو كما يلي، [SELECT name, subject, Avg (score) As Average From Analysis Group By name, subject] استخدم GROUP BY لجعل نتائج الاستعلام تعتمد على [name] و[ إحصائيات الموضوع، إحصائيات كل درجة إحصائية [متوسطة] متوسط (النتيجة):
<%
تعيين conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
تعيين rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "حدد الاسم، الموضوع، متوسط (الدرجات) كمتوسط من مجموعة الاختبار حسب الاسم، الموضوع"
rs2.Open SqlStr,conn1,1,1
Response.Write "<p>التجميع حسب الاسم، الموضوع"
افعل بينما لا rs2.EOF
الاستجابة.اكتب "<BR>" & rs2("الاسم") & " " & rs2("الموضوع") & "المتوسط:" & rs2("المتوسط")
rs2.MoveNext
حلقة
rs2.Close
%>
يستخدم برنامج ASP أعلاه rs22.asp متصفحًا على جانب العميل لتصفح نتائج التنفيذ وعرض النتيجة [المتوسطة] بناءً على [الاسم] و[الموضوع].
هل تعلمت ذلك؟