Fórum SQL #50989

13/05/2005

0

Pessoal,

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

Michaell

Responder

Posts

13/05/2005

Michaell

Alguém poderia me indicar um bom Fórum de SQL?


Responder

Gostei + 0

15/05/2005

Raserafim

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)



Responder

Gostei + 0

16/05/2005

Michaell

Eu tentei o seu código e não funcionou... Ele traz todas as marcas ainda...


Responder

Gostei + 0

16/05/2005

Michaell

Ninguém, pessoal?!


Responder

Gostei + 0

16/05/2005

Kotho

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 



Responder

Gostei + 0

17/05/2005

Michaell

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?!


Responder

Gostei + 0

17/05/2005

Kotho

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 



Responder

Gostei + 0

17/05/2005

Michaell

Também não... Tô quase desistindo, cara...


Responder

Gostei + 0

17/05/2005

Kotho

dá uma olhada na sua MP


Responder

Gostei + 0

17/05/2005

Kotho

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)



Responder

Gostei + 0

17/05/2005

Michaell

Grande Kotho!

Ufa, hein! Te devo essa!

Obrigado!

T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar