SELECT COM FUNCAO MAX
Estou fazendo um select para pegar o maior valor de preco com a funcao MAX(valor_preco). Link varios arquivos com join. Tudo funciona.
Estou querendo agora pegar uma data desse mesmo registro (data_compra) para ter a data da compra do maior preco, mais estou recebendo erro.
VOCE TENTOU EXECUTAR UMA CONSULTA QUE NAO INCLUI DATA_COMPRA ESPECIFICADA COMO PARTE DA FUNCAO AGREGADA.
Alguem pode me explicar melhor o motivo.
Estou querendo agora pegar uma data desse mesmo registro (data_compra) para ter a data da compra do maior preco, mais estou recebendo erro.
VOCE TENTOU EXECUTAR UMA CONSULTA QUE NAO INCLUI DATA_COMPRA ESPECIFICADA COMO PARTE DA FUNCAO AGREGADA.
Alguem pode me explicar melhor o motivo.
Talvez vc não esteja montando a sua SQL certo, talvez vc esteja digitando o nome do campo errado de uma olhada se é realmente DATA_COMPRA, se quiser me mande um email com o seu projeto eu do uma ajeitada para vc
WWEBER gostaria de te enviar mais ele é muito grande, com modulos, objetos de outros sistemas, acho que ficaria inviavel.
Mais o campo existe mesmo.
Esse erro normalmente da por qual motivo.
Mais o campo existe mesmo.
Esse erro normalmente da por qual motivo.
é pelo motivo q te falei qndo teoricamente vc esta pedindo para filtrar uma consulta atraves de um campo q não existe ou esta definido errado, mas se vc quiser me mande apenas as tabelas q vc usa neste processo...... zipa e me manda, explicando oq vc qr realmente
poste o select que vc montou
Enviei o select e banco para o wwender via email se puder dar uma olhada agradeco.
O select esta assim
rst.Open "Select max(preco) as maximo_preco, ordem_compra.data_oc From ordem_compra_itens, ordem_compra_preco, ordem_compra_fornecedor, ordem_compra,
"ordem_compra left join ordem_compra_preco on ordem_compra_preco.ano_oc = ordem_compra.ano_oc and " & _
"ordem_compra.cod_oc = ordem_compra_preco.cod_oc, " & _
"ordem_compra_preco left join ordem_compra_itens on ordem_compra_itens.ano_oc = ordem_compra_preco.ano_oc and " & _
"ordem_compra_itens.cod_oc = ordem_compra_preco.cod_oc and ordem_compra_itens.cod_material = ordem_compra_preco.cod_material, " & _
"ordem_compra_preco left join ordem_compra_fornecedor on ordem_compra_preco.ano_oc = ordem_compra_fornecedor.ano_oc and " & _
"ordem_compra_preco.cod_oc = ordem_compra_fornecedor.cod_oc and ordem_compra_preco.cod_fornecedor = ordem_compra_fornecedor.cod_fornecedor " & _
"Where ordem_compra_itens.cod_material = " & cod_material & " and ordem_compra_fornecedor.vencedor = 1 "
Tenho uma ordem de compra (ORDEM_COMPRA), ela tem varios itens de compra (ORDEM_COMPRA_ITENS). Sera feito uma cotacao de compra em que varios fornecedores participaram (ORDEM_COMPRA_FORNECEDOR) e que cada um tem seu preco de cada proditos a serem comprados (ORDEM_COMPRA_PRECO). Ou seja Uma compra vai ter varios itens que serao comprados, serao orcados em varios fornecedores e cada fornecedor vai dar um precos dos itens a serem comprados.
Preciso do maior preco (ordem_compra_preco.preco) e da data da Ordem de compra (ordem_compra.data_oc) deste maior preco. Os dois estao em tabelas diferentes.
O select esta assim
rst.Open "Select max(preco) as maximo_preco, ordem_compra.data_oc From ordem_compra_itens, ordem_compra_preco, ordem_compra_fornecedor, ordem_compra,
"ordem_compra left join ordem_compra_preco on ordem_compra_preco.ano_oc = ordem_compra.ano_oc and " & _
"ordem_compra.cod_oc = ordem_compra_preco.cod_oc, " & _
"ordem_compra_preco left join ordem_compra_itens on ordem_compra_itens.ano_oc = ordem_compra_preco.ano_oc and " & _
"ordem_compra_itens.cod_oc = ordem_compra_preco.cod_oc and ordem_compra_itens.cod_material = ordem_compra_preco.cod_material, " & _
"ordem_compra_preco left join ordem_compra_fornecedor on ordem_compra_preco.ano_oc = ordem_compra_fornecedor.ano_oc and " & _
"ordem_compra_preco.cod_oc = ordem_compra_fornecedor.cod_oc and ordem_compra_preco.cod_fornecedor = ordem_compra_fornecedor.cod_fornecedor " & _
"Where ordem_compra_itens.cod_material = " & cod_material & " and ordem_compra_fornecedor.vencedor = 1 "
Tenho uma ordem de compra (ORDEM_COMPRA), ela tem varios itens de compra (ORDEM_COMPRA_ITENS). Sera feito uma cotacao de compra em que varios fornecedores participaram (ORDEM_COMPRA_FORNECEDOR) e que cada um tem seu preco de cada proditos a serem comprados (ORDEM_COMPRA_PRECO). Ou seja Uma compra vai ter varios itens que serao comprados, serao orcados em varios fornecedores e cada fornecedor vai dar um precos dos itens a serem comprados.
Preciso do maior preco (ordem_compra_preco.preco) e da data da Ordem de compra (ordem_compra.data_oc) deste maior preco. Os dois estao em tabelas diferentes.
Tenta assim
"Where ordem_compra_itens.cod_material = " & cod_material & " and ordem_compra_fornecedor.vencedor = 1 group by ordem_compra.data_oc
order by max(preco) .se der certto Assim ele vai te agrupar por data_oc o maior preco
"Where ordem_compra_itens.cod_material = " & cod_material & " and ordem_compra_fornecedor.vencedor = 1 group by ordem_compra.data_oc
order by max(preco) .se der certto Assim ele vai te agrupar por data_oc o maior preco
Laerte
Acho que assim deve funcionar mais ele vai gerar uma lista enorme e so preciso do maior. Acho que ficaria muito lento. Estou tentando algo assim
" Select max(preco) as maximo_preco, " & _
" (select ordem_compra.data_oc from ordem_compra where ordem_compra_preco.ano_oc = ordem_compra.ano_oc and ordem_compra.cod_oc = ordem_compra_preco.cod_oc) as data_ordem_compra ", _
" ordem_compra_itens, ordem_compra_preco, ordem_compra_fornecedor, " & _
" ordem_compra_preco left join ordem_compra_itens on ordem_compra_itens.ano_oc = ordem_compra_preco.ano_oc and " & _
" ordem_compra_itens.cod_oc = ordem_compra_preco.cod_oc and ordem_compra_itens.cod_material = ordem_compra_preco.cod_material, " & _
" ordem_compra_preco left join ordem_compra_fornecedor on ordem_compra_preco.ano_oc = ordem_compra_fornecedor.ano_oc and " & _
" ordem_compra_preco.cod_oc = ordem_compra_fornecedor.cod_oc and ordem_compra_preco.cod_fornecedor = ordem_compra_fornecedor.cod_fornecedor ", _
" Where ordem_compra_itens.cod_material = " & cod_material & " and ordem_compra_fornecedor.vencedor = 1 "
Pois ele me pegaria a data da oc do maior preco. O preco esta saindo certo mais a data ainda nao se algem poder ajudar. Ainda estou quebrando a cabeca
[S51]
Acho que assim deve funcionar mais ele vai gerar uma lista enorme e so preciso do maior. Acho que ficaria muito lento. Estou tentando algo assim
" Select max(preco) as maximo_preco, " & _
" (select ordem_compra.data_oc from ordem_compra where ordem_compra_preco.ano_oc = ordem_compra.ano_oc and ordem_compra.cod_oc = ordem_compra_preco.cod_oc) as data_ordem_compra ", _
" ordem_compra_itens, ordem_compra_preco, ordem_compra_fornecedor, " & _
" ordem_compra_preco left join ordem_compra_itens on ordem_compra_itens.ano_oc = ordem_compra_preco.ano_oc and " & _
" ordem_compra_itens.cod_oc = ordem_compra_preco.cod_oc and ordem_compra_itens.cod_material = ordem_compra_preco.cod_material, " & _
" ordem_compra_preco left join ordem_compra_fornecedor on ordem_compra_preco.ano_oc = ordem_compra_fornecedor.ano_oc and " & _
" ordem_compra_preco.cod_oc = ordem_compra_fornecedor.cod_oc and ordem_compra_preco.cod_fornecedor = ordem_compra_fornecedor.cod_fornecedor ", _
" Where ordem_compra_itens.cod_material = " & cod_material & " and ordem_compra_fornecedor.vencedor = 1 "
Pois ele me pegaria a data da oc do maior preco. O preco esta saindo certo mais a data ainda nao se algem poder ajudar. Ainda estou quebrando a cabeca
[S51]
Dá um select top 1 ...ele já está ordenado pelo max e agrupado por data
Laerte,
Funcionou, Mais o select vai gerar 5000 registro para eu pegar so o primeiro, isso nao fica lento, estava tentando pegar so um registro para agilizar o select. O que voce acha ???
Funcionou, Mais o select vai gerar 5000 registro para eu pegar so o primeiro, isso nao fica lento, estava tentando pegar so um registro para agilizar o select. O que voce acha ???
Pior que sim véio....justamente pelo group by ele não vai saber qual linha retornar até eles estarem agrupados..se fosse só pelo order by, o engine consegue trabalhar com bookmarkÂÂÂ's.
Já que sua consulta pode trazer muitos dados mesmo Seria interessnate mesmo mudar a querie
Já que sua consulta pode trazer muitos dados mesmo Seria interessnate mesmo mudar a querie
Tópico encerrado , respostas não são mais permitidas