استخدام بناء جملة SELECT ستة في ADO
الكاتب:Eve Cole
وقت التحديث:2009-05-30 19:54:23
استعلام فرعي
في تعبير SELECT أو SELECT...INTO أو INSERT...INTO أو DELETE أو UPDATE، يمكنك تضمين تعبير SELECT يسمى تعبير SELECT هذا استعلامًا فرعيًا.
يمكنك إنشاء استعلامات فرعية باستخدام ثلاثة صيغ:
التعبير [أي | الكل |.] (استعلام فرعي)
التعبير [NOT] IN (استعلام فرعي)
[غير] موجود (استعلام فرعي)
يحتوي تعبير SELECT لاستعلام فرعي على نفس بناء جملة تعبير SELECT العام ويجب وضعه بين قوسين.
يمكنك استخدام الاستعلامات الفرعية لاستبدال عوامل التشغيل في تعبير SELECT، أو في جملة WHERE أو HAVING.
الكلمات الأساسية ANY وSOME لها نفس المعنى ويتم استخدامها لتحديد شروط المقارنة لأي سجلات تطابق الاستعلام الفرعي. على سبيل المثال، سيعرض المثال التالي السجلات التي يكون فيها سعر الوحدة للمنتج أكبر من أي كمية أكبر من 100 في الطلب:
اختر * من المنتجات
حيث سعر الوحدة> أي
(اختر سعر الوحدة من الطلب
حيث الكمية> 100)
يتم استخدام الكلمة الأساسية ALL لتحديد شروط المقارنة لجميع السجلات التي تطابق الاستعلام الفرعي.
على سبيل المثال، في المثال أعلاه، سيؤدي تغيير ANY إلى ALL إلى إرجاع السجلات التي يكون فيها سعر الوحدة للمنتج أكبر من كافة الطلبات التي تحتوي على كمية أكبر من 100.
الكلمة الأساسية IN مسند لاسترداد بعض السجلات التي تحتوي على نفس القيمة في الاستعلام الرئيسي وفي الاستعلام الفرعي فقط. يعرض المثال التالي جميع المنتجات المباعة بخصم قدره 25 بالمائة أو أكثر:
يتم استخدام الكلمة الأساسية IN لتحديد السجلات في الاستعلام الفرعي. على سبيل المثال، سيُرجع المثال التالي سجلات بكمية > 100 بالترتيب:
اختر * من المنتجات
أين يوجد رمز المنتج
(اختر رمز المنتج من الطلب
حيث الكمية> 100)
وفي المقابل، يتم استخدام الكلمة الأساسية NOT IN لتحديد السجلات غير المضمنة في الاستعلام الفرعي.
في مقارنة صح/خطأ، يمكنك استخدام الكلمة الأساسية EXISTS لتحديد ما إذا كان الاستعلام الفرعي سيرجع أية سجلات.
مثال ASP للكلمة الأساسية ALL، مثل برنامج ASP rs24.asp هو كما يلي، [حدد الاسم، الموضوع، النتيجة من الامتحان حيث subject = 'الحساب' والنتيجة >= الكل (اختر النتيجة من الامتحان حيث subject = 'الحساب ' and name =' Zhang San')] ابحث عن السجلات الحسابية للاختبار الحسابي الذي تكون درجاته أكبر من أو تساوي 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 = "اختر الاسم والموضوع والنتيجة من الامتحان حيث الموضوع = 'الحساب' والنتيجة >= الكل (اختر النتيجة من الامتحان حيث الموضوع = 'الحساب' والاسم = 'تشانغ سان')"
rs2.Open SqlStr,conn1,1,1
Response.اكتب "<p>جميع الدرجات أعلى من حسابات تشانغ سان"
افعل بينما لا rs2.EOF
الاستجابة.اكتب "<BR>" & rs2("الاسم") & " " & rs2("الموضوع") & "النتيجة: " & rs2("النتيجة")
rs2.MoveNext
حلقة
rs2.Close
%>
يستخدم برنامج ASP أعلاه rs24.asp متصفحًا على جانب العميل لتصفح نتائج التنفيذ وعرض السجلات الحسابية للاختبار الحسابي الذي تكون درجاته أكبر من أو تساوي Zhang San.
أي
يتم استخدام الكلمة الأساسية ANY لتحديد شروط المقارنة لأي سجل يطابق الاستعلام الفرعي، على سبيل المثال، يكون برنامج ASP rs24.asp كما يلي، [SELECT name, subject, Score From Exam Where subject = 'arithmetic' والنتيجة >=. أي (اختر درجة من الاختبار حيث الموضوع='الحساب' والاسم='Zhang San')] ابحث عن السجلات التي يكون كسرها أكبر من أو يساوي أي كسر حسابي لـ 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 = "حدد الاسم والموضوع والنتيجة من الامتحان حيث الموضوع = 'الحساب' والنتيجة >= أي (اختر النتيجة من الاختبار حيث الموضوع = 'الحساب' والاسم = 'زانغ سان')"
rs2.Open SqlStr,conn1,1,1
Response.اكتب "<p>أي كسر أعلى من حساب Zhang San"
افعل بينما لا rs2.EOF
الاستجابة.اكتب "<BR>" & rs2("الاسم") & " " & rs2("الموضوع") & "النتيجة: " & rs2("النتيجة")
rs2.MoveNext
حلقة
rs2.Close%>
يستخدم برنامج ASP أعلاه rs24.asp متصفحًا على جانب العميل لتصفح نتائج التنفيذ وعرض السجلات التي تكون درجاتها أكبر من أو تساوي أي كسر حسابي لـ Zhang San.
بعض
الكلمات الأساسية SOME وANY لها نفس المعنى، وتستخدم لتحديد شروط المقارنة لأي سجل يطابق الاستعلام الفرعي، على سبيل المثال، برنامج ASP rs24.asp هو كما يلي، [SELECT Name, Subject, Score From Exam Where Subject. = 'الحساب' والنتيجة >= البعض (SELECT Score From Exam Where Subject='Arithmetic' and Name='Zhang San')] ابحث عن السجلات التي تكون درجاتها أكبر من أو تساوي أي كسر حسابي لـ 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 = "حدد الاسم والموضوع والنتيجة من الامتحان حيث الموضوع = 'الحساب' والنتيجة >= بعض (اختر النتيجة من الاختبار حيث الموضوع = 'الحساب' والاسم = 'زانغ سان')"
rs2.Open SqlStr,conn1,1,1
Response.اكتب "<p>بعض الكسر أعلى من حساب تشانغ سان"
افعل بينما لا rs2.EOF
الاستجابة.اكتب "<BR>" & rs2("الاسم") & " " & rs2("الموضوع") & "النتيجة: " & rs2("النتيجة")
rs2.MoveNext
حلقة
rs2.Close
%>
يستخدم برنامج ASP أعلاه rs24.asp متصفحًا على جانب العميل لتصفح نتائج التنفيذ وعرض السجلات التي تكون درجاتها أكبر من أو تساوي أي كسر حسابي لـ Zhang San.
حدد...إلى
تحديد...في سيقوم بإنشاء جدول تم إنشاؤه بناءً على نتائج الاستعلام.
بناء الجملة هو كما يلي:
حدد الحقل 1[,الحقل 2[,...]] في جدول جديد[في جدول خارجي]
من الجدول
لا يمكن أن يكون اسم الجدول الجديد هو نفس اسم الجدول الموجود، وإلا سيحدث خطأ.
يحتوي الجدول الجديد الذي تم إنشاؤه بواسطة Select...Into على نفس نوع بيانات الحقل وحجمه مثل الجدول الذي تم الاستعلام عنه.
دعونا نلقي نظرة على مثال لاستخدام أمر SQL هذا في برنامج ASP.
على سبيل المثال، برنامج ASP rs9.asp كما يلي، [Select * Into Computer From Product Where Type = 'Computer'] سيقوم بإنشاء جدول [كمبيوتر] جديد لجميع سجلات [النوع] في جدول [المنتج] كـ [كمبيوتر] ]:
<%
تعيين conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
sql = "اختر * إلى الكمبيوتر من المنتج حيث الفئة = 'الكمبيوتر'"
تعيين = conn1.Execute (sql)
تعيين rs3 = Server.CreateObject("ADODB.Recordset")
sql = "اختر * من الكمبيوتر"
rs3.Open SQL، conn1،1،1،1
%>
<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">الكود</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">الاسم</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">السعر</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">الكمية</FONT></TD>
</TR>
<% افعل بينما لا rs3.EOF %>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("codename")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("name")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("price")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("quantity")%></TD>
</TR>
<%
rs3.MoveNext
حلقة
rs3.إغلاق
%>
</الجدول>
يستخدم برنامج ASP أعلاه rs9.asp متصفحًا على العميل لتصفح نتائج التنفيذ وعرض سجلات جدول [الكمبيوتر] الجديد.