Há um limite no número de ANDs que você pode usar em uma instrução SQL SELECT não documentado. O limite é 99 ANDs e numa cláusula WHERE é de 99 ANDs em uma cláusula HAVING.
Microsoft Access retornará as seguintes mensagens de erro quando exceder esse limite:
Expressão muito complexa- ou -Consulta é muito complexa.
O erro também pode ocorrer se a consulta incluir uma expressão de função Switch() que contenha mais de 13 conjuntos de argumento. A solução alternativa é criar uma função definida pelo usuário (UDF) que incorpore a instrução Select Case e chamá-la da consulta.
Existem processos que precisam estar submetidos a períodos como datas e horários. Também é necessário submetê-los a um ranking e etc... Como podemos efetuar essas cláusulas em tabelas, de modo que fiquem condicionados aos períodos, horários e de um modo ranqueado? O modo como escrevemos o nosso código SQL é que definirá o retorno da nossa consulta. Por isso demonstro algumas técnicas de como isso pode ser feito (Divirtam-se):
' Este código retorna todos os emails cadastrados numa tabela chamada' "Mails" , cujo o campo "timeReceived" (que registrou a gravação dos' registros) tenha ocorrência com o período inferior a '2012-04-28 08:53:00'.
"SELECT * FROM ( SELECT * FROM Mails WHERE (timeReceived < '2012-04-28 08:53:00' ) )";
' Este código retorna todos os emails cadastrados numa tabela chamada' "Mails" , cujo o campo "timeReceived" (que registrou a gravação dos' registros) tenha ocorrência com o período igual a '2012-04-28 08:53:00'.' Ordenando o resultado pela coluna timeReceived em ordem descendente.
"SELECT * FROM Mails WHERE (timeReceived = '2012-04-28 08:53:00' ) ORDER BY timeReceived DESC";
' Este código retorna todos os 30 primeiros emails cadastrados na tabela' "Mails", cujo o campo "timeReceived" (que registrou a gravação dos' registros) tenham ocorrência com o período inferior a '2012-04-28 08:53:00'.' Ordenando o resultado pela coluna timeReceived em ordem descendente.
SELECT TOP 30 * FROM Mails WHERE timeReceived < '2012-04-28 08:53:00' ORDER BY timeReceived DESC
' Este código retorna todos os 25 primeiros emails cadastrados na tabela' "Students", cujo o campo "GraduationYear" tenham ocorrência com o período' igual a '2012'. Ordenando o resultado pela coluna GradePointAverage em' ordem descendente.
SELECT TOP 25FirstName, LastNameFROM StudentsWHERE GraduationYear = 2003' Este código retorna todos os 30 primeiros emails cadastrados na tabelaORDER BY GradePointAverage DESC
' "Mails", cujo o campo "timeReceived" seja inferior a '2012-04-28 08:53:00'.' Ordenando o resultado pela coluna GTimeReceived em ordem descendente e' Ordenando a coluna MailID em ordem crescente
SELECT TOP 30 *FROM MailsWHERE timeReceived < '2012-04-28 08:53:00'ORDER BY timeReceived DESC, MailID ASC
' Este código retorna todos os 30 primeiros emails cadastrados na tabela' "Mails", cujo o campo "timeReceived" seja inferior a '2012-04-28 08:53:00'.
' Ordenando o resultado da coluna GTimeReceived em ordem descendente
SELECT top 30 *FROM MailsWHERE timeReceived < '2012-04-28 08:53:00'ORDER BY timeReceived desc
Reference::
http://office.microsoft.com/en-us/ac...313511033.aspx
http://office.microsoft.com/en-us/ac...314971033.aspx
Tags: SQL, Access, Top, descend, ANDs, AND, HAVING, SELECT, DESC, ASC, UDF
Nenhum comentário:
Postar um comentário