Использование синтаксиса 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 используется для выбора условий сравнения всех записей, соответствующих подзапросу.
Например, в приведенном выше примере изменение ЛЮБОГО на ВСЕ приведет к возврату записей, в которых цена за единицу продукта превышает цену всех заказов с количеством, превышающим 100.
Предикат Keyword IN для получения определенных записей, которые содержат одно и то же значение в основном запросе и только во вложенном запросе. В следующем примере возвращаются все продукты, проданные со скидкой 25 процентов или более:
Ключевое слово IN используется для выбора записей в подзапросе. Например, следующий пример вернет записи с количеством > 100 в заказе:
ВЫБРАТЬ * ИЗ продуктов
ГДЕ код продукта В
(ВЫБЕРИТЕ код продукта ИЗ заказа
ГДЕ количество > 100)
Напротив, ключевое слово NOT IN используется для выбора записей, которые не включены в подзапрос.
При сравнении «истина/ложь» вы можете использовать ключевое слово EXISTS, чтобы определить, вернет ли подзапрос какие-либо записи.
Пример ASP ключевого слова ALL, например программы ASP rs24.asp, выглядит следующим образом: [ВЫБЕРИТЕ имя, предмет, оценку Из экзамена, где предмет = «арифметика» и оценка >= Все (ВЫБЕРИТЕ оценку из экзамена, где предмет = «арифметика» ' и 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
Ответ. Напишите «<p>Все оценки выше, чем арифметика Чжан Саня»
Делайте пока не rs2.EOF
Response.Write "<BR>" & rs2("Имя") & " " & rs2("Тема") & " Оценка: " & rs2("Оценка")
rs2.MoveNext
Петля
rs2.Закрыть
%>
Вышеупомянутая программа ASP rs24.asp использует браузер на стороне клиента для просмотра результатов выполнения и отображения арифметических записей арифметического теста, результаты которого больше или равны Чжан Сану.
Любой
Ключевое слово ANY используется для выбора условий сравнения любой записи, соответствующей подзапросу. Например, программа ASP rs24.asp имеет следующий вид: [ВЫБРАТЬ имя, предмет, оценку Из экзамена, где предмет = «арифметика» и оценка >=. Любой (выберите балл из экзамена, где Тема='Арифметика' и Имя='Чжан Сан')] Найдите записи, дробь которых больше или равна любой арифметической дроби Чжан Сан:
<%
Установите 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
Ответ.Напишите «<p>Любая дробь, превышающая арифметику Чжан Саня»
Делайте пока не rs2.EOF
Response.Write "<BR>" & rs2("Имя") & " " & rs2("Тема") & " Оценка: " & rs2("Оценка")
rs2.MoveNext
Петля
rs2.Close%>
Вышеупомянутая программа ASP rs24.asp использует браузер на стороне клиента для просмотра результатов выполнения и отображения записей, баллы которых больше или равны любой арифметической дроби Чжан Сан.
Некоторый
Ключевые слова SOME и ANY имеют одинаковое значение и используются для выбора условий сравнения любой записи, соответствующей подзапросу. Например, программа ASP rs24.asp имеет следующий вид: [ВЫБРАТЬ имя, предмет, балл из экзамена, где предмет. = «Арифметика» и оценка >= Некоторые (ВЫБЕРИТЕ балл из экзамена, где тема = «Арифметика» и имя = «Чжан Сан»)] Найдите записи, баллы которых больше или равны любой арифметической дроби Чжан Сан:
<%
Установите 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
Ответ.Напишите «<p>Некоторая дробь больше, чем арифметика Чжан Саня»
Делайте пока не rs2.EOF
Response.Write "<BR>" & rs2("Имя") & " " & rs2("Тема") & " Оценка: " & rs2("Оценка")
rs2.MoveNext
Петля
rs2.Закрыть
%>
Вышеупомянутая программа ASP rs24.asp использует браузер на стороне клиента для просмотра результатов выполнения и отображения записей, баллы которых больше или равны любой арифметической дроби Чжан Сан.
Выбрать...В
Select...Into создаст сгенерированную таблицу на основе результатов запроса.
Синтаксис следующий:
ВЫБРАТЬ поле 1[,поле 2[, ...]] INTO новую таблицу[ВО внешней таблице]
ИЗ таблицы
Имя новой таблицы не может совпадать с именем существующей таблицы, иначе произойдет ошибка.
Новая таблица, созданная Select...Into, имеет тот же тип данных и размер поля, что и запрошенная таблица.
Давайте рассмотрим пример использования этой команды SQL в программе ASP.
Например, программа ASP rs9.asp выглядит следующим образом: [Выбрать * В компьютер из продукта, где тип = 'Компьютер'] сгенерирует новую таблицу [Компьютер] для всех записей [Тип] в таблице [Продукт] как [Компьютер] ]:
<%
Установите conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
sql = "Выбрать * В компьютер из продукта, где категория = 'Компьютер'"
Установите a = conn1.Execute(sql)
Установите rs3 = Server.CreateObject("ADODB.Recordset")
sql = "Выбрать * с компьютера"
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("codename")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("name")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("price")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("количество")%></TD>
</TR>
<%
rs3.MoveNext
Петля
rs3.Закрыть
%>
</ТАБЛИЦА>
Вышеупомянутая программа ASP rs9.asp использует браузер на клиенте для просмотра результатов выполнения и отображения записей новой таблицы [Компьютер].