استخدام بناء جملة SELECT أربعة في ADO
الكاتب:Eve Cole
وقت التحديث:2009-05-30 19:54:28
امتلاك
يتم استخدام HAVING في تعبيرات SELECT لتصفية السجلات التي تم حسابها بواسطة GROUP BY. بعد أن يقوم GROUP BY بحساب السجلات، سيقوم HAVING بتصفية السجلات التي تطابق الشروط الواردة في جملة HAVING.
بناء الجملة هو كما يلي:
حدد القائمة الميدانية
من الجدول
حيث حدد المعايير
GROUP BY groupfieldlist
[وجود معايير جماعية]
يشير .groupcriteria إلى السجلات الإحصائية التي تحدد السجلات التي يجب تصفيتها.
HAVING يشبه WHERE ويستخدم لتحديد السجلات التي سيتم تحديدها. عند استخدام GROUP BY لحساب السجلات، سيحدد HAVING السجلات التي يجب عرضها، على سبيل المثال:
حدد اسم المنتج
من المنتجات
المجموعة حسب الفئة
وجود سعر الوحدة> 1000
يمكن أن تحتوي جملة HAVING على ما يصل إلى 40 تعبيرًا تشغيليًا، وسيتم ربط التعبيرات التشغيلية بواسطة عوامل تشغيل منطقية مثل AND أو OR.
دعونا نلقي نظرة على مثال لاستخدام أمر SQL هذا في برنامج ASP.
يمكننا استخدام جملة HAVING لتحديد السجلات التي يجب عرضها، على سبيل المثال، برنامج ASP rs23.asp هو كما يلي، [SELECT Name, Subject, Avg (Score) As Average From Exam Group By Name, Subject Have Avg (. النتيجة) >=60]، استخدم متوسط(النتيجة) >=60 ابحث عن السجلات ذات متوسط نقاط أكبر من أو يساوي 60 نقطة:
<%
تعيين 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 = "حدد الاسم، الموضوع، متوسط (الدرجات) كمتوسط من مجموعة الاختبار حسب الاسم، الموضوع له متوسط (الدرجات) >=60"
rs2.Open SqlStr,conn1,1,1
الاستجابة.اكتب "<p>وجود متوسط (النتيجة) >=60"
افعل بينما لا rs2.EOF
الاستجابة.اكتب "<BR>" & rs2("الاسم") & " " & rs2("الموضوع") & "المتوسط:" & rs2("المتوسط")
rs2.MoveNext
حلقة
rs2.Close
%>
يستخدم برنامج ASP أعلاه rs23.asp متصفحًا على العميل لاستعراض نتائج التنفيذ وعرض السجلات التي يكون متوسط درجاتها أكبر من أو يساوي 60 نقطة.
يمكننا أيضًا استخدام جملة HAVING للبحث عن السجلات المكررة، على سبيل المثال، يكون برنامج ASP rs23.asp كما يلي، [SELECT Code From Product Group By Code Getting Count (Code) > 1]، استخدم Have Count (Code) > 1. للعثور على سجلات الرموز المكررة:
<%
تعيين 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 = "حدد رمزًا من مجموعة المنتجات حسب عدد الكود (الكود) > 1"
rs2.Open SqlStr,conn1,1,1
Response.Write "<p>البحث عن التكرارات ذات العدد (الكود) > 1"
افعل بينما لا rs2.EOF
الاستجابة.اكتب "<BR>" & rs2("الاسم الرمزي")
rs2.MoveNext
حلقة
rs2.Close
%>
بالنسبة لبرنامج ASP أعلاه rs23.asp، استخدم مستعرضًا على جانب العميل لاستعراض نتائج التنفيذ وعرض السجلات بأسماء التعليمات البرمجية المكررة.
الاتحاد
يمكن لـ Union دمج نتائج مجموعات متعددة من الاستعلامات.
بناء الجملة هو كما يلي:
الاستعلام 1 الاتحاد [الكل] الاستعلام 2 [الاتحاد [الكل] الاستعلام 3 [ ... ]]
الاستعلام عبارة عن تعبير SELECT.
عند استخدام عملية UNION، لن يتم إرجاع السجلات المكررة؛ إذا كنت تريد إرجاع كافة السجلات، يمكنك إضافة الكل بعد إضافة الكل إلى تنفيذ الاستعلام بشكل أسرع.
يجب أن تحتوي كافة الاستعلامات في عملية UNION على نفس عدد الحقول. يمكن أن تكون أحجام الحقول مختلفة، كما يمكن أن تكون أنواع بيانات الحقول مختلفة أيضًا.
يمكن استخدام الأسماء المستعارة فقط في تعبير SELECT الأول ويتم حذفها في تعبيرات SELECT الأخرى.
يمكنك استخدام جملة GROUP BY أو HAVING في كل تعبير SELECT لحساب نتائج الاستعلام.
يمكنك استخدام جملة ORDER BY في تعبير SELECT الأخير لتحديد الترتيب الذي يتم به فرز نتائج الاستعلام.
دعونا نلقي نظرة على مثال لاستخدام أمر SQL هذا في برنامج ASP.
يمكن استخدام Union لدمج نتائج مجموعتين من الاستعلامات، على سبيل المثال، برنامج ASP rs25.asp هو كما يلي، [(SELECT name, subject, Score From Exam Where subject='arithmetic' وname='Li Si'. ) Union (اسم SELECT، موضوع، نتيجة) من الامتحان حيث subject='arithmetic' وname='Zhang San')]، استخدم Union لدمج نتائج مجموعتين من استعلامات SELECT، مجموعة واحدة للاستعلام عن سجلات الدرجات الحسابية من Li Si، والآخر هو الاستعلام عن سجلات النتائج الحسابية لـ Zhang San:
<%
تعيين 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 = "(حدد الاسم، الموضوع، النتيجة من الاختبار حيث الموضوع='الحساب' والاسم='Li Si') الاتحاد (حدد الاسم، الموضوع، النتيجةمن الاختبار حيث الموضوع='الحساب' والاسم='تشانغ سان') "
rs2.Open SqlStr,conn1,1,1
الاستجابة.اكتب "<p>الاتحاد"
افعل بينما لا rs2.EOF
الاستجابة.اكتب "<BR>" & rs2("الاسم") & " " & rs2("الموضوع") & "النتيجة: " & rs2("النتيجة")
rs2.MoveNext
حلقة
rs2.Close
%>
يستخدم برنامج ASP أعلاه rs25.asp مستعرضًا على العميل لاستعراض نتائج التنفيذ وعرض سجلات الكسور الحسابية لـ John Doe وJohn Doe.