Dois Selects

07/08/2007

0

blz galera?!
To enrolado num select aki q ta de arrebenta hein! segue:

SELECT SUM(QTDE) AS QTDE, 
SUM(QTDE*VLRUNITARIO- VLRDESCONTO) AS TOTAL, ITENSMOVPRODUTOS.ID_PRODUTOS
FROM ITENSMOVPRODUTOS INNER JOIN MOVPRODUTOS ON 
MOVPRODUTOS.ID_MOVPRODUTOS = ITENSMOVPRODUTOS.ID_MOVPRODUTOS 
WHERE ITENSMOVPRODUTOS.STATUS = 1 AND 
MOVPRODUTOS.DATA BETWEEN ´2007-08-07´ AND ´2007-08-07 23:59:59´ 
GROUP BY ITENSMOVPRODUTOS.ID_GRUPOPRODUTOS, ITENSMOVPRODUTOS.ID_PRODUTOS


neste select ele me traz 3 colunas (QTDE - TOTAL - ID_PRODUTOS)
*********

SELECT SUM(QTDE*VLRUNITARIO- VLRDESCONTO) AS TOTAL, ITENSMOVPRODUTOS.ID_GRUPOPRODUTOS
FROM ITENSMOVPRODUTOS INNER JOIN MOVPRODUTOS ON 
MOVPRODUTOS.ID_MOVPRODUTOS = ITENSMOVPRODUTOS.ID_MOVPRODUTOS 
WHERE ITENSMOVPRODUTOS.STATUS = 1 AND 
MOVPRODUTOS.DATA BETWEEN ´2007-08-07´ AND ´2007-08-07 23:59:59´ 
GROUP BY ITENSMOVPRODUTOS.ID_GRUPOPRODUTOS


neste select ele me traz 2 colunas (TOTAL - ID_GRUPOPRODUTOS)

eu qria ´unir´ estes dois selects, deixa - los num select so.... Alguma dica?
*********


Output

Output

Responder

Posts

07/08/2007

Emerson Nascimento

diretamente creio que não, pois numa você agrupa pelo código do produto e na outra você agrupa pelo grupo do produto. o que você pode fazer é uma sub-select.
SELECT
  SUM(IMP.QTDE) AS QTDE,
  SUM(IMP.QTDE*(IMP.VLRUNITARIO - IMP.VLRDESCONTO)) AS TOTAL_PRODUTO,
  IMP.ID_PRODUTOS,
  IMP.ID_GRUPOPRODUTOS,
  (SELECT
     SUM(IMP2.QTDE*(IMP2.VLRUNITARIO - IMP2.VLRDESCONTO))
   FROM
     ITENSMOVPRODUTOS IMP2
   INNER JOIN
     MOVPRODUTOS MP2 ON MP2.ID_MOVPRODUTOS = IMP2.ID_MOVPRODUTOS
   WHERE
     IMP2.STATUS = 1 AND
     MP2.DATA BETWEEN ´2007-08-07´ AND ´2007-08-07 23:59:59´ AND
     IMP2.ID_GRUPOPRODUTOS = IMP.ID_GRUPOPRODUTOS) TOTAL_GRUPO
FROM
  ITENSMOVPRODUTOS IMP
INNER JOIN
  MOVPRODUTOS MP ON MP.ID_MOVPRODUTOS = IMP.ID_MOVPRODUTOS
WHERE
  IMP.STATUS = 1 AND
  MP.DATA BETWEEN ´2007-08-07´ AND ´2007-08-07 23:59:59´
GROUP BY
  IMP.ID_GRUPOPRODUTOS, IMP.ID_PRODUTOS



Responder

08/08/2007

Output

Opa boa kra ...
+ uma vez vlw pela ajuda ...

naum qrendo se aproveitar, mais daria pra dar um [b:8ebc349d9f]SUM(IMP.QTDE*(IMP.VLRUNITARIO - IMP.VLRDESCONTO)) AS TOTAL_FORMA [/b:8ebc349d9f]neste msm select so q este sum agrupando por IMP.FORMAPGTO ???


Responder

08/08/2007

Emerson Nascimento

só dará certo se você puser IMP.FORMAPGTO no agrupamento principal, mas isso implicará na alteração dos valores exibidos antes desta alteração. talvez seja melhor executar as instruções separadamente, visto que são informações distintas.
SELECT
  SUM(IMP.QTDE) AS QTDE,
  SUM(IMP.QTDE*(IMP.VLRUNITARIO - IMP.VLRDESCONTO)) AS TOTAL_PRODUTO,
  IMP.ID_PRODUTOS,
  IMP.ID_GRUPOPRODUTOS,
  IMP.FORMAPGTO,
  (SELECT
     SUM(IMP2.QTDE*(IMP2.VLRUNITARIO - IMP2.VLRDESCONTO))
   FROM
     ITENSMOVPRODUTOS IMP2
   INNER JOIN
     MOVPRODUTOS MP2 ON MP2.ID_MOVPRODUTOS = IMP2.ID_MOVPRODUTOS
   WHERE
     IMP2.STATUS = 1 AND
     MP2.DATA BETWEEN ´2007-08-07´ AND ´2007-08-07 23:59:59´ AND
     IMP2.ID_GRUPOPRODUTOS = IMP.ID_GRUPOPRODUTOS) TOTAL_GRUPO,
  (SELECT
     SUM(IMP2.QTDE*(IMP2.VLRUNITARIO - IMP2.VLRDESCONTO))
   FROM
     ITENSMOVPRODUTOS IMP2
   INNER JOIN
     MOVPRODUTOS MP2 ON MP2.ID_MOVPRODUTOS = IMP2.ID_MOVPRODUTOS
   WHERE
     IMP2.STATUS = 1 AND
     MP2.DATA BETWEEN ´2007-08-07´ AND ´2007-08-07 23:59:59´ AND
     IMP2.FORMAPGTO = IMP.FORMAPGTO) TOTAL_FORMA
FROM
  ITENSMOVPRODUTOS IMP
INNER JOIN
  MOVPRODUTOS MP ON MP.ID_MOVPRODUTOS = IMP.ID_MOVPRODUTOS
WHERE
  IMP.STATUS = 1 AND
  MP.DATA BETWEEN ´2007-08-07´ AND ´2007-08-07 23:59:59´
GROUP BY
  IMP.ID_GRUPOPRODUTOS, IMP.FORMAPGTO, IMP.ID_PRODUTOS



Responder

08/08/2007

Output

ow [b:7699f60549]emerson.en[/b:7699f60549]
vlw kra ... exatamente isto q eu qria ...
Forte Abraço amigo ...


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar