SQL
Pessoal,
Alguém pode me ajudar com esse SQL, por favor?!
Tenho um relacionamento n x n entre as tabelas de PRODUTO e MARCA (MARCA_PRODUTO). A idéia é trazer o menor valor dessa Marca, ok? Só que nesse caso aí, ele está me trazendo todas as marcas daquele Produto... Tentei, tentei... Mas não saiu...
[]´s
Alguém pode me ajudar com esse SQL, por favor?!
SELECT MRPR.MARC_ID, MARC.MARC_NOME, MRPR.MRPR_DATA, MRPR.MRPR_SUSPENSO, MIN(MRPR.MRPR_VLR_COMPRA) AS VLR_COMPRA FROM MARCA_PRODUTO MRPR INNER JOIN MARCA MARC ON MRPR.MARC_ID = MARC.MARC_ID GROUP BY MRPR.MARC_ID, MARC.MARC_NOME, MRPR.MRPR_DATA, MRPR.MRPR_SUSPENSO, MRPR.MRPR_VLR_COMPRA, MRPR.PRDT_ID HAVING MRPR.MRPR_SUSPENSO = ´Falso´ AND MRPR.MRPR_VLR_COMPRA > 0 AND MRPR.PRDT_ID = :PRDT_ID
Tenho um relacionamento n x n entre as tabelas de PRODUTO e MARCA (MARCA_PRODUTO). A idéia é trazer o menor valor dessa Marca, ok? Só que nesse caso aí, ele está me trazendo todas as marcas daquele Produto... Tentei, tentei... Mas não saiu...
[]´s
Michaell
Curtidas 0
Respostas
Michaell
13/05/2005
Alguém poderia me indicar um bom Fórum de SQL?
GOSTEI 0
Raserafim
13/05/2005
vês se é isso que vc quer:
... HAVING MRPR.MRPR_SUSPENSO = ´Falso´ AND MRPR.MRPR_VLR_COMPRA > 0 AND MRPR.PRDT_ID = :PRDT_ID AND MRPR.MRPR_VLR_COMPRA = MIN(MRPR.MRPR_VLR_COMPRA)
GOSTEI 0
Michaell
13/05/2005
Eu tentei o seu código e não funcionou... Ele traz todas as marcas ainda...
GOSTEI 0
Michaell
13/05/2005
Ninguém, pessoal?!
GOSTEI 0
Kotho
13/05/2005
tente assim:
SELECT MRPR.MARC_ID, MARC.MARC_NOME, MRPR.MRPR_DATA, MRPR.MRPR_SUSPENSO, MIN(MRPR.MRPR_VLR_COMPRA) AS VLR_COMPRA FROM MARCA_PRODUTO MRPR INNER JOIN MARCA MARC ON MRPR.MARC_ID = MARC.MARC_ID GROUP BY MRPR.MARC_ID, MARC.MARC_NOME, MRPR.MRPR_DATA, MRPR.MRPR_SUSPENSO, MRPR.PRDT_ID HAVING MRPR.MRPR_SUSPENSO = ´Falso´ AND MIN(MRPR.MRPR_VLR_COMPRA) > 0 AND MRPR.PRDT_ID = :PRDT_ID
GOSTEI 0
Michaell
13/05/2005
Puts... Parece ser tão simples mas tá dando um trabalho pessoal... Não funcionou, Kotho... Já tentei de todas as formas mudar as cláusulas GROUP BY e HAVING, mas não funciona... Ele traz todas as marcas... Se eu colocar apenas o MIN() sem GROUP BY e HAVING, ele traz apenas o valor mínimo... Mas eu preciso do Nome da marca, data e as outras informações... Mais alguém, pessoal?!
GOSTEI 0
Kotho
13/05/2005
Foi mal... acho que encontrei o problema, o PRDT_ID não pode estar no GROUP BY... tente assim:
SELECT MRPR.MARC_ID, MARC.MARC_NOME, MRPR.MRPR_DATA, MRPR.MRPR_SUSPENSO, MIN(MRPR.MRPR_VLR_COMPRA) AS VLR_COMPRA FROM MARCA_PRODUTO MRPR INNER JOIN MARCA MARC ON MRPR.MARC_ID = MARC.MARC_ID WHERE MRPR.PRDT_ID = :PRDT_ID GROUP BY MRPR.MARC_ID, MARC.MARC_NOME, MRPR.MRPR_DATA, MRPR.MRPR_SUSPENSO HAVING MRPR.MRPR_SUSPENSO = ´Falso´ AND MIN(MRPR.MRPR_VLR_COMPRA) > 0
GOSTEI 0
Michaell
13/05/2005
Também não... Tô quase desistindo, cara...
GOSTEI 0
Kotho
13/05/2005
dá uma olhada na sua MP
GOSTEI 0
Kotho
13/05/2005
Caro... agora eu tenho quase certeza que consegui... (nada como uns dados para testar)...
SELECT MRPR.MARC_ID, MARC.MARC_NOME, MRPR.MRPR_DATA, MRPR.MRPR_SUSPENSO, MRPR.MRPR_VLR_COMPRA FROM MARCA_PRODUTO MRPR INNER JOIN MARCA MARC ON MRPR.MARC_ID = MARC.MARC_ID WHERE MRPR.PRDT_ID = :PRDT_ID AND MRPR.MRPR_VLR_COMPRA = (SELECT MIN(MRPR2.MRPR_VLR_COMPRA) FROM MARCA_PRODUTO MRPR2 WHERE MRPR2.PRDT_ID = MRPR.PRDT_ID)
GOSTEI 0
Michaell
13/05/2005
Grande Kotho!
Ufa, hein! Te devo essa!
Obrigado!
T+
Ufa, hein! Te devo essa!
Obrigado!
T+
GOSTEI 0