Ir para conteúdo
Fórum Script Brasil
  • 0

O Que Tem De Errado Na Minha Instrução Sql?


Alink

Pergunta

Olá galera não sei o que tem de errado nas minhas instrução sql, sql não é o meu forte poderiam me ajudar estou com uma certa urgencia:

Quando uso:

SELECT * FROM passagem WHERE idcliente = '1' AND idloja = '1' OR idloja = '4' AND identrada = '1' AND (data BETWEEN #1/1/2006# AND #31/12/2006#) AND (horario BETWEEN #00:00:00# AND #23:00:00#) GROUP BY DATA ORDER BY ID ASC

Microsoft JET Database Engine error '80040e21'

Cannot group on fields selected with '*'.

/clientes/grafico.asp, line 177

OU

Quando uso:

SELECT DISTINCT(data), SUM(quantidade) AS totalquantidade,* FROM passagem WHERE idcliente = '1' AND idloja = '1' OR idloja = '4' AND identrada = '1' AND (data BETWEEN #1/1/2006# AND #31/12/2006#) AND (horario BETWEEN #00:00:00# AND #23:00:00#) GROUP BY DATA

Microsoft JET Database Engine error '80040e21'

Cannot group on fields selected with '*'.

/clientes/grafico.asp, line 177

Aguardo ajuda urgente.

Editado por Alink
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

não da pra usar * com group by, você tem que colocar os campos que você está pedindo pra exibir no group by também, tipo:

SELECT data FROM passagem WHERE idcliente = '1' AND idloja = '1' OR idloja = '4' AND identrada = '1' AND (data BETWEEN #1/1/2006# AND #31/12/2006#) AND (horario BETWEEN #00:00:00# AND #23:00:00#) GROUP BY DATA ORDER BY ID ASC

Link para o comentário
Compartilhar em outros sites

  • 0

Olá andreia ai se eu coloco da forma que você falou:

SELECT quantidade, data, horario FROM passagem WHERE idcliente = '1' AND idloja = '1' AND identrada = '1' AND (data BETWEEN #1/1/2006# AND #28/12/2006#) AND (horario BETWEEN #07:00:00# AND #23:00:00#) GROUP BY DATA ORDER BY id ASC

da esse erro:

Microsoft JET Database Engine error '80040e21'

You tried to execute a query that does not include the specified expression 'quantidade' as part of an aggregate function.

Link para o comentário
Compartilhar em outros sites

  • 0

Kara, para essa query funcionar, você tem que agrupar todos os campos em que voce esta fazendo o select, veja abaixo,

SELECT quantidade, data, horario FROM passagem WHERE idcliente = '1' AND idloja = '1' AND identrada = '1' AND (data BETWEEN #1/1/2006# AND #28/12/2006#) AND (horario BETWEEN #07:00:00# AND #23:00:00#) GROUP BY quantidade, data, horario  ORDER BY id ASC

espero ter ajudado,

Link para o comentário
Compartilhar em outros sites

  • 0

Olá como vai você Alink, vi que você está com muita dificuldade e fim ajudar também você como o pessoal lá em cima, olha vi que você gostaria de saber onde está errando e o porque, bom irei colocar erro por erro para você assim você ira entender melhor ok Alink lá vai e boa sorte.

Erro 1:

Quando você tomou a decisão de co Between em segundo plano, você errou na definição dele, e nunca se coloca nesta ordem porque você terá que ter o primeiro campo como referencia e você o colocou como definido idcliente = '1'.

Erro2:

Ao indicar o Between, você fechou as () e não definiu ele para fazer algo, como você colocou, não faz nada por que você não o indicou com IN, sem o campo de referencia e a indicação, seu Between está morto, não faz nada na sua instrução.

Erro3:

Você criou um between para cada tabela, isto deixou muito mais confusa sua instrução.

Este é um exemplo para você entender melhor:

"SELECT CAMPO1, CAMPO2, CAMPO3 FROM TABELA WHERE CAMPO4_REFERENCIA In ('CAMPO5', 'CAMPO6', 'CAMPO7_ONDE_SERA_FEITO_A_BUSCA')"

Este seria um exemplo de busca de datas entre x e y no campo data e horário, coloquei assim só para você ter uma idéia, porque assim ele não tem lógica alguma, eles são campos separados e para ter alguma lógica deveria estar no mesmo campo, é só como exemplo.

"SELECT quantidade, data, horario FROM passagem WHERE data BETWEEN #1/1/2006# AND #28/12/2006# In ('data', 'horario')"

Dica:

90% dos problemas em SQL para programadores com pouca experiência, é fazer o banco de dados antes da logística de cada página, vou te dar um exemplo, quando você cria um cadastro, o que você cria primeiro, o banco de dados ou a página, 90% dos programadores sabem o que é mais trabalhoso e vai logo no banco de dados, isto é um erro porque a logística pode mudar criando simplesmente um novo item, um grande exemplo é o tema paginação.

Forte abraço fica com Deus.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...