استخدام بناء جملة SELECT 5 في ADO
الكاتب:Eve Cole
وقت التحديث:2009-05-30 19:54:26
ينضم
تقوم اتصالات JOIN بدمج السجلات الميدانية في جدولين، بما في ذلك ثلاثة أنواع:
صيغة عملية INNER JOIN: ضم السجلات الميدانية ودمجها في جدولين.
صيغة عملية LEFT JOIN: ضم ودمج سجلات الحقول في جدولين، وسوف تشمل جميع السجلات في الجدول الأيسر من LEFT JOIN.
صيغة عملية RIGHT JOIN: ضم ودمج السجلات الميدانية في جدولين، وسوف تشمل جميع السجلات في الجدول على الجانب الأيمن من RIGHT JOIN.
يقوم INNER JOIN بتعيين تعبير العملية المتعلق بجدولين للاتصال ودمج السجلات الميدانية في الجدولين.
بناء جملة INNER JOIN كما يلي:
من الجدول 1 INNER JOIN الجدول 2 في الجدول 1. الحقل 1 عامل المقارنة الجدول 2. الحقل 2
الحقول المستخدمة لربط جدولين، مثل [جدول 1. الحقل 1 = جدول 2. الحقل 2]، يجب أن يكون لها نفس نوع الحقل، ولكن ليس من الضروري أن تكون أسماء الحقول هي نفسها.
على سبيل المثال، يمكن توصيل نوع الحقل "رقم تلقائي" بنوع الحقل "طويل"، ولكن لا يمكن توصيل نوع الحقل "عدد صحيح مفرد" بنوع الحقل "عدد صحيح مزدوج".
يمكن أن تكون عوامل المقارنة = أو < أو > أو <= أو >= أو <>.
لا يمكن أن تحتوي الحقول المتصلة بواسطة JOIN على أنواع حقول MEMO أو أنواع كائنات OLE، وإلا سيحدث خطأ.
في تعبير JOIN، يمكن توصيل عدة جمل ON:
حدد الحقول
من الجدول 1 INNER JOIN الجدول 2
في الجدول 1. الحقل 1 جدول عوامل المقارنة 2. الحقل 1 AND
في الجدول 1. الحقل 2 جدول مشغل المقارنة 2. الحقل 2) أو
في الجدول 1. جدول مشغلي المقارنة للحقل 3 2. الحقل 3)
يمكن أن تكون تعبيرات JOIN متداخلة:
حدد الحقول
من الجدول 1 الانضمام الداخلي
(الجدول 2 الانضمام الداخلي [(] الجدول 3
[INNER JOIN [(] الجدول x [INNER JOIN ...)]
في الجدول 3. جدول مشغل المقارنة الحقل x الحقل x)]
في الجدول 2. الحقل 2 جدول مشغل المقارنة 3. الحقل 3)
في الجدول 1. الحقل 1 جدول مشغلي المقارنة 2. الحقل 2
في INNER JOIN، يمكن تضمين JOIN LEFT JOIN المتداخلة أو RIGHT JOIN، ولكن في LEFT JOIN أو RIGHT JOIN، لا يمكن تضمين INNER JOIN المتداخلة.
دعونا نلقي نظرة على مثال لاستخدام أمر SQL هذا في برنامج ASP.
يمكنك استخدام Inner Join...On لدمج السجلات في الجدولين، على سبيل المثال، يكون برنامج ASP rs26.asp كما يلي، [حدد رمز المبيعات، واسم المنتج، وسعر المنتج، والكمية Inner Join Product On Product Code = Sales.Code]، استخدم Inner Join...On لتعيين صيغة الحساب المتعلقة بالجدولين، ودمج السجلات في الجدولين:
<%
تعيين conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
تعيين rs3 = Server.CreateObject("ADODB.Recordset")
sql = "حدد رمز المبيعات، واسم المنتج، وسعر المنتج، وكمية المبيعات من SalesInner، وانضم إلى ProductOn Product.Code = Sales.Code"
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(0)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(1)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(2)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(3)%></TD>
</TR>
<%
rs3.MoveNext
حلقة
rs3.إغلاق
%>
</الجدول>
يستخدم برنامج ASP أعلاه rs26.asp متصفحًا على جانب العميل لتصفح نتائج التنفيذ وعرض السجلات في الجدولين المدمجين نظرًا لعدم وجود حقول اسم وحقول أسعار في جدول المبيعات، [Inner Join Product On Product. Code = Sales.Code] ابحث عن البيانات في حقل الاسم وحقل السعر في جدول المنتج.
يستخدم المثال أعلاه بناء جملة Inner Join:
حدد Sales.Code، Product.Name، Product.Price، Sales.Quantity من SalesInner انضم إلى ProductOn Product.Code = Sales.Code
والنتيجة هي نفسها كما يلي باستخدام Where:
حدد Sales.Code، Product.Name، Product.Price، Sales.Quantity from Sales، ProductWhere Product.Code = Sales.Code
الانضمام الأيسر/الانضمام الأيمن
يجمع اتصال INNER JOIN بين سجلات الحقول ذات الصلة في جدولين، وهو اتصال داخلي، ويمكنك أيضًا استخدام:
استخدم عملية LEFT JOIN: لإنشاء صلة خارجية يسرى. بالإضافة إلى الحصول على سجلات الحقول ذات الصلة في الجدولين، ستتضمن LEFT JOIN أيضًا جميع السجلات الموجودة في الجدول الأيسر لـ LEFT JOIN، بغض النظر عما إذا كانت هناك سجلات مطابقة في الجدول الأيمن.
استخدم عملية RIGHT JOIN: قم بإنشاء اتصال خارجي صحيح. بالإضافة إلى الحصول على سجلات الحقول ذات الصلة في الجدولين، ستتضمن RIGHT JOIN أيضًا جميع السجلات الموجودة في الجدول الأيمن من RIGHT JOIN، بغض النظر عما إذا كانت هناك سجلات مطابقة في الجدول الأيسر.
على سبيل المثال، يمكن لـ [Sales LEFT JOIN Products] تحديد كافة سجلات المبيعات. [بيع منتجات الانضمام الصحيح] يمكن تحديد جميع سجلات المنتج.
على سبيل المثال، لا يؤدي استخدام Left Join...On إلى الحصول على سجلات الحقول ذات الصلة في الجدولين فحسب، بل يتضمن أيضًا كافة السجلات الموجودة في الجدول الأيسر لـ LEFT JOIN. برنامج ASP rs26.asp هو كما يلي، [Select sales. الكود، اسم المنتج، المنتج. السعر، المبيعات. الكمية من SalesLeft Join ProductOn Product.Code = Sales.Code]، باستخدام Left Join يتضمن جميع السجلات في جدول المبيعات على الجانب الأيسر من LEFT JOIN:
<%
تعيين conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
'conn1.Open "driver={SQL Server};server=(Local);uid=sa;pwd=;database=NtopSamp"
تعيين rs3 = Server.CreateObject("ADODB.Recordset")
sql = "حدد رمز المبيعات، واسم المنتج، وسعر المنتج، وكمية المبيعات من SalesLeft، وانضم إلى ProductOn Product.Code = Sales.Code"
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(0)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(1)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(2)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(3)%></TD>
<%
rs3.MoveNext
حلقة
rs3.إغلاق
%>
</الجدول>
بالنسبة لبرنامج ASP أعلاه rs26.asp، استخدم المتصفح الموجود على جانب العميل لتصفح نتائج التنفيذ. تحتوي الشاشة على كافة السجلات الموجودة في جدول المبيعات على الجانب الأيسر من LEFT JOIN نظرًا لعدم وجود حقل الاسم وحقل السعر جدول المبيعات سجل المبيعات بالكود رقم 4 من خلال [Sales Left Join Product On Product.Code = Sales.Code] يتم العثور على بيانات حقل الاسم وحقل السعر لجدول المنتج وبالنسبة للأكواد الأخرى فإن البيانات لم يتم العثور على حقل الاسم وحقل السعر.
باستخدام Right Join...On لا يحصل على سجلات الحقول ذات الصلة في الجدولين فحسب، بل يتضمن أيضًا كافة السجلات الموجودة في الجدول الأيمن من RIGHT JOIN. على سبيل المثال، يكون برنامج ASP rs26.asp كما يلي، [Select Sales .Code، Product.Name، Product .Price، Sales.Quantity from Sales Right Join Product On Product.Code = Sales.Code]، يؤدي استخدام Right Join إلى تضمين كافة السجلات في جدول المنتج على الجانب الأيمن من RIGHT JOIN:
<%
تعيين conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
تعيين rs3 = Server.CreateObject("ADODB.Recordset")
sql = "حدد رمز المبيعات، واسم المنتج، وسعر المنتج، وكمية المبيعات من SalesRight، وانضم إلى ProductOn Product.Code = Sales.Code"
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(0)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(1)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(2)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(3)%></TD>
<%
rs3.MoveNext
حلقة
rs3.إغلاق
%>
</الجدول>
بالنسبة لبرنامج ASP أعلاه rs26.asp، استخدم المتصفح الموجود على جانب العميل لتصفح نتائج التنفيذ. تحتوي الشاشة على كافة السجلات الموجودة في جدول المنتج على الجانب الأيمن من الصلة اليمنى نظرًا لعدم وجود حقل كمية في المنتج الجدول، يتم تمرير سجل المنتج بالرمز رقم 4 [ Sales Right Join Product On Product.Code = Sales.Code] يتم العثور على البيانات الموجودة في حقل الكمية بجدول المبيعات، أما بالنسبة للأكواد الأخرى، فلا يتم العثور على البيانات الموجودة في حقل الكمية وجد.
هل اكتشفت ذلك؟