SQL Comparação
Boa Tarde
Amigos
Estou precisando de uma ajuda de vcs,tenho a seguinte tabela com os campos
"TB_empresa"
Id
empresa
produto
valor
Empresa produto valor
x 1 R$ 300
x 2 R$ 400
x 3 R$ 500
Y 1 R$ 150
Y 2 R$ 200
Y 3 R$ 600
como montar uma consulta em que me a pesquisa seria feita pelo produto ex.( 1 ) e me retorna-se a empresa com menor custo.
Ex : resultado da consulta
produto empresa valor:
1 Y R$ 150
Produto 1 da empresa Y é mais barato
Grato
Amigos
Estou precisando de uma ajuda de vcs,tenho a seguinte tabela com os campos
"TB_empresa"
Id
empresa
produto
valor
Empresa produto valor
x 1 R$ 300
x 2 R$ 400
x 3 R$ 500
Y 1 R$ 150
Y 2 R$ 200
Y 3 R$ 600
como montar uma consulta em que me a pesquisa seria feita pelo produto ex.( 1 ) e me retorna-se a empresa com menor custo.
Ex : resultado da consulta
produto empresa valor:
1 Y R$ 150
Produto 1 da empresa Y é mais barato
Grato
Frost
Curtidas 0
Respostas
Eduardo Marcolongo
14/09/2010
Eu fiz um teste assim e retornou certo:
select first 1 empresa, produto, min(preco) from tb_empresa where produto = '1'group by empresa, produtoorder by min(preco)
select first 1 empresa, produto, min(preco) from tb_empresa where produto = '1'group by empresa, produtoorder by min(preco)
GOSTEI 0
Wilson Junior
14/09/2010
SELECT FIRST 1 ID, Empresa, Produto, MIN(Valor) AS MenorValor FROM TB_empresa WHERE Produto = 1 GROUP BY ID, Empresa, Produto ORDER BY MenorValor
Espero ter colaborado.
GOSTEI 0
Wilson Junior
14/09/2010
Caramba, o pessoal ta rápido no gatilho hein....que bom.
GOSTEI 0
Eriley Barbosa
14/09/2010
SELECT FIRST 1
Empresa,
Produto,
MIN(Valor) AS MenorValor
FROM
TB_empresa
WHERE
Produto = 1
GROUP BY
Empresa,
Produto
ORDER BY
MenorValor Retirei o Id, senão ia agrupar pois um id é diferente do outro
Empresa,
Produto,
MIN(Valor) AS MenorValor
FROM
TB_empresa
WHERE
Produto = 1
GROUP BY
Empresa,
Produto
ORDER BY
MenorValor Retirei o Id, senão ia agrupar pois um id é diferente do outro
GOSTEI 0
Wilson Junior
14/09/2010
E qual a diferença em ter ou não o ID?
Se tendo ID diferentes ele iria agrupar, o que acontecerá se tiver "Empresa + Produto" sempre diferentes?
Em ambos os casos ele irá agrupar corretamente, a diferença de ter o ID ou não é se você quer que retorne o campo ID ou não.
Não poderia deixar de colocar esta resalva.
Espero ter colaborado.
Se tendo ID diferentes ele iria agrupar, o que acontecerá se tiver "Empresa + Produto" sempre diferentes?
Em ambos os casos ele irá agrupar corretamente, a diferença de ter o ID ou não é se você quer que retorne o campo ID ou não.
Não poderia deixar de colocar esta resalva.
Espero ter colaborado.
GOSTEI 0
Emerson Nascimento
14/09/2010
precisa do GROUP BY ???? Não basta ordenar?
SELECT FIRST 1 *
FROM TB_empresa
WHERE Produto = '1'
ORDER BY Valor
com a instrução acima você sabe qual empresa tem o produto 1 com o menor preço.
agora se você quiser saber quais são os produtos mais baratos, tente:
SELECT TB1.*
FROM TB_empresa TB1
WHERE TB1.Valor =
(select min(TB2.Valor)
from TB_empresa TB2
where TB2.Produto = TB1.Produto)
observe que a cláusula FIRST serve para o FIREBIRD, enquanto que para o SQL SERVER deve-se usar TOP.
SELECT FIRST 1 *
FROM TB_empresa
WHERE Produto = '1'
ORDER BY Valor
com a instrução acima você sabe qual empresa tem o produto 1 com o menor preço.
agora se você quiser saber quais são os produtos mais baratos, tente:
SELECT TB1.*
FROM TB_empresa TB1
WHERE TB1.Valor =
(select min(TB2.Valor)
from TB_empresa TB2
where TB2.Produto = TB1.Produto)
observe que a cláusula FIRST serve para o FIREBIRD, enquanto que para o SQL SERVER deve-se usar TOP.
GOSTEI 0
Wilson Junior
14/09/2010
Não precisaria do GROUP BY, tinha pegado um caso real e colocado sem analisar.
ÓTIMA observação Emerson.
ÓTIMA observação Emerson.
GOSTEI 0
Frost
14/09/2010
Boa Tarde
Amigos
Obrigado a todos
funcionou certinho ak :)
GOSTEI 0