Использование синтаксиса 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 следующий:
FROM Таблица 1 INNER JOIN Таблица 2 ON Таблица 1. Поле 1 Оператор сравнения Таблица 2. Поле 2
Поля, используемые для соединения двух таблиц, например [Таблица 1. Поле 1 = Таблица 2. Поле 2], должны иметь одинаковый тип поля, но имена полей не обязательно должны быть одинаковыми.
Например, тип поля «Автонумерация» можно связать с типом поля «Длинное число», но тип поля «Одно целое число» нельзя связать с типом поля «Двойное целое число».
Операторами сравнения могут быть =, <, >, <=, >= или <>.
Поля, соединенные с помощью JOIN, не могут содержать типы полей MEMO или типы объектов OLE, в противном случае произойдет ошибка.
В выражении JOIN можно соединить несколько предложений ON:
ВЫБРАТЬ поля
FROM таблица 1 INNER JOIN таблица 2
ВКЛ Таблица 1. Поле 1 Таблица операторов сравнения 2. Поле 1 И
ВКЛ Таблица 1. Поле 2 Таблица операторов сравнения 2. Поле 2) ИЛИ
ПО таблица 1. поле 3 оператор сравнения таблица 2. поле 3)
Выражения JOIN могут быть вложенными:
ВЫБРАТЬ поля
ИЗ ТАБЛИЦЫ 1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ
(Таблица 2 ВНУТРЕННЕЕ СОЕДИНЕНИЕ [( ]Таблица 3
[ВНУТРЕННЕЕ СОЕДИНЕНИЕ [( ] таблица x [ВНУТРЕННЕЕ СОЕДИНЕНИЕ ...)]
ON Таблица 3. Поле 3 Таблица операторов сравнения x Поле x)]
ВКЛ Таблица 2. Поле 2 Таблица операторов сравнения 3. Поле 3)
ВКЛ Таблица 1. Поле 1 Таблица операторов сравнения 2. Поле 2
В INNER 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 = "Выберите Sales.Code, Product.Name, Product.Price, Sales.Quantity из SalesInner. Присоединяйтесь к ProductOn Product.Code = Sales.Code"
rs3.Открыть sql,conn1,1,1,1
%>
<ТАБЛИЦА COLSPAN=8 CELLPADDING=5 BORDER=0>
<ТР>
<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 %>
<ТР>
<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. Код = Продажи.Код] Найдите данные в поле имени и поле цены таблицы продуктов.
В приведенном выше примере используется синтаксис внутреннего соединения:
Выберите Sales.Code, Product.Name, Product.Price, Sales.Quantity из SalesInner. Присоединяйтесь к ProductOn Product.Code = Sales.Code.
Результат тот же, что и следующий, при использовании Where:
Выберите Sales.Code, Product.Name, Product.Price, Sales.Quantity из Sales, ProductWhere Product.Code = Sales.Code.
ЛЕВОЕ СОЕДИНЕНИЕ/ПРАВОЕ СОЕДИНЕНИЕ
Соединение INNER JOIN объединяет связанные записи полей в две таблицы, что является внутренним соединением. Вы также можете использовать:
Используйте операцию LEFT JOIN: для создания левого внешнего соединения. Помимо получения связанных записей полей в двух таблицах, LEFT JOIN также включит все записи в левой таблице LEFT JOIN, независимо от того, есть ли совпадающие записи в правой таблице.
Используйте операцию RIGHT JOIN: создайте правое внешнее соединение. Помимо получения связанных записей полей в двух таблицах, RIGHT JOIN также включит все записи в правой таблице RIGHT JOIN, независимо от того, есть ли совпадающие записи в левой таблице.
Например, [Продукты LEFT JOIN Sales] можно выбрать все записи о продажах. [Продать продукты RIGHT JOIN] Можно выбрать все записи продуктов.
Например, использование левого соединения...Вкл. не только получает связанные записи полей в двух таблицах, но также включает все записи в левой таблице левого соединения. Программа ASP rs26.asp выглядит следующим образом: [Выбрать продажи. code, Product.name, Product .Price, Sales.Quantity from SalesLeft Join ProductOn Product.Code = Sales.Code], использование левого соединения включает все записи в таблице продаж в левой части 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 = "Выберите Sales.Code, Product.Name, Product.Price, Sales.Quantity из SalesLeft. Присоединяйтесь к ProductOn Product.Code = Sales.Code"
rs3.Открыть sql,conn1,1,1,1
%>
<ТАБЛИЦА COLSPAN=8 CELLPADDING=5 BORDER=0>
<ТР>
<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 %>
<ТР>
<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, через [Продажи остались в соединении с продуктом на продукте.Код = Продажи.Код] находятся данные поля имени и поля цены таблицы продуктов. Для других кодов данные находятся. поля имени и поля цены не найдены.
Использование Right JOIN...On не только получает связанные записи полей в двух таблицах, но также включает все записи в правой таблице RIGHT JOIN. Например, программа ASP rs26.asp выглядит следующим образом: [Выбрать продажи. .Code, Product.Name, Product .Price, Sales.Quantity из права продажи. Присоединиться к продукту на 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 = "Выберите Sales.Code, Product.Name, Product.Price, Sales.Quantity из SalesRight. Присоединяйтесь к ProductOn Product.Code = Sales.Code"
rs3.Открыть sql,conn1,1,1,1
%>
<ТАБЛИЦА COLSPAN=8 CELLPADDING=5 BORDER=0>
<ТР>
<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 %>
<ТР>
<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 [Право продажи на объединение продукта на продукт.Код = Продажи.Код] Данные в поле количества таблицы продаж найдены. Для других кодов данные в поле количества не найдены. найденный.
Разобрались?