Использование четвертого синтаксиса SELECT в ADO
Автор:Eve Cole
Время обновления:2009-05-30 19:54:28
ИМЕЮЩИЙ
HAVING используется в выражениях SELECT для фильтрации записей, подсчитанных с помощью GROUP BY. После того, как GROUP BY подсчитает записи, HAVING отфильтрует записи, соответствующие условиям предложения HAVING.
Синтаксис следующий:
ВЫБРАТЬ список полей
ИЗ таблицы
ГДЕ выбрать критерии
ГРУППИРОВАТЬ ПО списку полей группы
[НАЛИЧИЕ групповых критериев]
.groupcriteria указывает статистические записи, которые определяют, какие из них следует фильтровать.
HAVING аналогичен WHERE и используется для принятия решения о том, какие записи выбрать. Когда GROUP BY используется для подсчета записей, HAVING определяет записи, которые должны отображаться, например:
ВЫБЕРИТЕ название продукта
ИЗ продуктов
ГРУППИРОВАТЬ ПО КАТЕГОРИЯМ
ЕСТЬ цена за единицу > 1000
Предложение HAVING может содержать до 40 операционных выражений, которые будут связаны логическими операторами, такими как AND или OR.
Давайте рассмотрим пример использования этой команды SQL в программе ASP.
Мы можем использовать предложение HAVING для определения записей, которые должны отображаться. Например, программа ASP rs23.asp выглядит следующим образом: [ВЫБЕРИТЕ имя, предмет, средний балл (оценка) как среднее значение по группе экзаменов по имени, предмет имеет среднее значение (). Оценка) >=60], используйте Наличие Avg(score) >=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
Response.Write "<p>Среднее значение (оценка) >=60"
Делайте пока не rs2.EOF
Response.Write "<BR>" & rs2("Имя") & " " & rs2("Тема") & " Среднее: " & rs2("Среднее")
rs2.MoveNext
Петля
rs2.Закрыть
%>
Вышеупомянутая программа ASP rs23.asp использует браузер на клиенте для просмотра результатов выполнения и отображения записей, средний балл которых больше или равен 60 баллам.
Мы также можем использовать предложение HAVING для поиска повторяющихся записей. Например, программа ASP rs23.asp выглядит следующим образом: [ВЫБРАТЬ код из группы продуктов по коду, имеющему количество (код) > 1], используйте наличие количества (код) > 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
Response.Write "<BR>" и rs2("кодовое имя")
rs2.MoveNext
Петля
rs2.Закрыть
%>
Для указанной выше программы ASP rs23.asp используйте браузер на стороне клиента для просмотра результатов выполнения и отображения записей с повторяющимися кодовыми именами.
Союз
Union может объединять результаты нескольких наборов запросов.
Синтаксис следующий:
Запрос 1 UNION [ALL] Запрос 2 [UNION [ALL] Запрос 3 [ ... ]]
Запрос представляет собой выражение SELECT.
При использовании операции UNION повторяющиеся записи не будут возвращены; если вы хотите вернуть все записи, вы можете добавить ALL после UNION. Добавление ALL приведет к более быстрому выполнению запроса.
Все запросы в операции UNION должны иметь одинаковое количество полей. Размеры полей могут быть разными, а типы данных полей также могут быть разными.
Псевдонимы можно использовать только в первом выражении SELECT и опускать в других выражениях SELECT.
Вы можете использовать предложение GROUP BY или HAVING в каждом выражении SELECT для подсчета результатов запроса.
Вы можете использовать предложение ORDER BY в последнем выражении SELECT, чтобы указать порядок сортировки результатов запроса.
Давайте рассмотрим пример использования этой команды SQL в программе ASP.
Объединение можно использовать для объединения результатов двух наборов запросов. Например, программа ASP rs25.asp выглядит следующим образом: [(ВЫБЕРИТЕ имя, предмет, оценку Из экзамена, где предмет = 'арифметика' и имя = 'Li Si'. ) Union (имя SELECT, предмет, оценка) Из экзамена. Где subject='arithmetic' и name='Zhang San')], используйте Union для объединения результатов двух наборов запросов SELECT, одна группа предназначена для запроса записей арифметических оценок. Ли Си, а другой — запросить записи арифметических оценок Чжан Саня:
<%
Установите 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 = "(ВЫБЕРИТЕ имя, предмет, результат из экзамена, где предмет = 'арифметика' и имя = 'Ли Си') Union (ВЫБЕРИТЕ имя, предмет, результат из экзамена, где предмет = 'арифметика' и имя = 'Чжан Сан') "
rs2.Open SqlStr,conn1,1,1
Response.Write "<p>Union"
Делайте пока не rs2.EOF
Response.Write "<BR>" & rs2("Имя") & " " & rs2("Тема") & " Оценка: " & rs2("Оценка")
rs2.MoveNext
Петля
rs2.Закрыть
%>
Вышеупомянутая ASP-программа rs25.asp использует браузер на клиенте для просмотра результатов выполнения и отображения записей арифметических дробей Джона Доу и Джона Доу.