Usando a sintaxe SELECT quatro no ADO
Autor:Eve Cole
Data da Última Atualização:2009-05-30 19:54:28
TENDO
HAVING é usado em expressões SELECT para filtrar registros que foram contados por GROUP BY. Após GROUP BY contar os registros, HAVING filtrará os registros que correspondem às condições da cláusula HAVING.
A sintaxe é a seguinte:
SELECIONE lista de campos
DA tabela
ONDE selecionar critérios
GROUP BY groupfieldlist
[TENDO critérios de grupo]
.groupcriteria indica os registros estatísticos que determinam quais devem ser filtrados.
HAVING é semelhante a WHERE e é usado para decidir quais registros selecionar. Quando GROUP BY for utilizado para contar registros, HAVING determinará os registros que deverão ser exibidos, por exemplo:
SELECIONE o nome do produto
DE produtos
Agrupar por categoria
TENDO preço unitário > 1000
Uma cláusula HAVING pode conter até 40 expressões operacionais, e as expressões operacionais serão conectadas por operadores lógicos como AND ou OR.
Vejamos um exemplo de uso deste comando SQL em um programa ASP.
Podemos usar a cláusula HAVING para determinar os registros que devem ser exibidos. Por exemplo, o programa ASP rs23.asp é o seguinte, [SELECT Name, Subject, Avg (Score) As Average From Exam Group By Name, Subject Taking Avg (. Score) >=60], use Tendo Avg(score) >=60 Encontre registros com pontuação média maior ou igual a 60 pontos:
<%
Definir conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Driver Microsoft Access (*.mdb)};DriverId=25;FIL=MS Access;"
Definir rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "SELECIONE Nome, Assunto, Média (Pontuação) como Média do Grupo de Exames por Nome, Assunto com Média (Pontuação) >=60"
rs2.Open SqlStr,conn1,1,1
Response.Write "<p>Tendo média(pontuação) >=60"
Faça enquanto não rs2.EOF
Response.Write "<BR>" & rs2("Nome") & " " & rs2("Assunto") & " Média: " & rs2("Média")
rs2.MoveNext
Laço
rs2.Fechar
%>
O programa ASP rs23.asp acima usa um navegador no cliente para navegar pelos resultados da execução e exibir os registros cuja pontuação média é maior ou igual a 60 pontos.
Também podemos usar a cláusula HAVING para localizar registros duplicados. Por exemplo, o programa ASP rs23.asp é o seguinte, [SELECIONAR Código do Grupo de Produtos por Código Tendo Contagem (Código) > 1], use Tendo Contagem (Código) > 1. para encontrar registros de códigos duplicados:
<%
Definir conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Driver Microsoft Access (*.mdb)};DriverId=25;FIL=MS Access;"
Definir rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "SELECIONE código do grupo de produtos por código com contagem (código)> 1"
rs2.Open SqlStr,conn1,1,1
Response.Write "<p>Encontre duplicatas com contagem (código)> 1"
Faça enquanto não rs2.EOF
Response.Write "<BR>" & rs2("nome do código")
rs2.MoveNext
Laço
rs2.Fechar
%>
Para o programa ASP rs23.asp acima, use um navegador no lado do cliente para navegar pelos resultados da execução e exibir registros com nomes de código duplicados.
União
Union pode combinar os resultados de vários conjuntos de consultas.
A sintaxe é a seguinte:
Consulta 1 UNION [ALL] Consulta 2 [UNION [ALL] Consulta 3 [ ... ]]
A consulta é uma expressão SELECT.
Ao usar uma operação UNION, os registros duplicados não serão retornados; se você quiser retornar todos os registros, poderá adicionar ALL após UNION. Adicionar ALL executará a consulta mais rapidamente.
Todas as consultas em uma operação UNION devem ter o mesmo número de campos. Os tamanhos dos campos podem ser diferentes e os tipos de dados dos campos também podem ser diferentes.
Os aliases podem ser usados somente na primeira expressão SELECT e são omitidos em outras expressões SELECT.
Você pode usar a cláusula GROUP BY ou HAVING em cada expressão SELECT para contar os resultados da consulta.
Você pode usar a cláusula ORDER BY na última expressão SELECT para especificar a ordem na qual os resultados da consulta são classificados.
Vejamos um exemplo de uso deste comando SQL em um programa ASP.
Union pode ser usado para mesclar os resultados de dois conjuntos de consultas. Por exemplo, o programa ASP rs25.asp é o seguinte, [(SELECT name, subject, score From exam Where subject='arithmetic' and name='Li Si'. ) União (nome SELECT, matéria, pontuação) Do exame Onde assunto='aritmética' e nome='Zhang San')], use União para mesclar os resultados de dois conjuntos de consultas SELECT, um grupo é para consultar os registros de pontuação aritmética de Li Si, e a outra é consultar os registros de pontuação aritmética de Zhang San:
<%
Definir conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Driver Microsoft Access (*.mdb)};DriverId=25;FIL=MS Access;"
Definir rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "(SELECIONE nome, matéria, pontuação do exame Onde matéria = 'aritmética' e nome = 'Li Si') União (SELECIONE nome, matéria, pontuação do exame Onde matéria = 'aritmética' e nome = 'Zhang San')"
rs2.Open SqlStr,conn1,1,1
Resposta.Escreva "<p>União"
Faça enquanto não rs2.EOF
Response.Write "<BR>" & rs2("Nome") & " " & rs2("Assunto") & " Pontuação: " & rs2("Pontuação")
rs2.MoveNext
Laço
rs2.Fechar
%>
O programa ASP rs25.asp acima usa um navegador no cliente para navegar pelos resultados da execução e exibir os registros de frações aritméticas de John Doe e John Doe.