Junção de Varias Tabelas
oLA PESSOAL...
Estou tentando fazer a junção de cinco tabelas, mas não sei motar o select. Peciso da ajuda de voces. Abaixo ´os selects´ que estou tentando, mas não estou conseguido fazer a junção. Preciso que o retorno seja da seguinte forma:
Id_produto |descrição_detalhada| data_entrada |Quan_Entrada| total_Entrada| data_SAida|Quant_Saida| Total_saida
Primeiramente tentei:
SELECT I.ID_PRODUTO, P.descricao_detalhada, v.data_saida, e.data_inclusao ,
CAST(SUM(IE.QUANT_PRODUTO)AS NUMERIC(8,2)) AS QUANT_ENTRADA,
CAST(SUM(I.QUANT_PRODUTO)AS NUMERIC(8,2)) AS QUANT_SAIDA,
SUM(IE.VALOR_TOTAL) AS TOTAL_ENTRADA,
SUM(I.VALOR_TOTAL) AS TOTAL_SAIDA
FROM PRODUTOS P, SAIDAS_PRODUTOS V , ITENS_SAIDAS I , entradas_produtos e , itens_entradas IE
where p.id = i.id_produto or p.id =i.id_produto and v.id = i.id and e.id = i.id
GROUP BY v.data_saida, e.data_inclusao, I.ID_PRODUTO, P.descricao_detalhada;
Depois tentei:
SELECT I.ID_PRODUTO, P.descricao_detalhada,v.data_saida, e.data_inclusao,
CAST(SUM(IE.QUANT_PRODUTO)AS NUMERIC(8,2)) AS QUANT_ENTRADA,
CAST(SUM(I.QUANT_PRODUTO)AS NUMERIC(8,2)) AS QUANT_SAIDA,
SUM(IE.VALOR_TOTAL) AS TOTAL_ENTRADA,
SUM(I.VALOR_TOTAL) AS TOTAL_SAIDA
FROM PRODUTOS P,
left outer join entradas_produtos E on ( e.id = ie.id),
left outer join itens_entradas IE on ( ie.id_produto = p.id),
left outer join SAIDAS_PRODUTOS V on ( V.id = i.id),
left outer join ITENS_SAIDAS I on ( ie.id_produto = p.id),
where P.id = I.id_produto or P.ID = IE.id_produto
GROUP BY v.data_saida, e.data_inclusao,I.ID_PRODUTO, P.descricao_detalhada;
e não obtive sucesso.
Estou estudando sql, para ver se consigo montar, mas não encontro material que esclareça as minhas duvidas. Até agora só encontrei exemplos com duas tabelas utilizando ´inner join´ e poucas informações sobre left outer join.
Preciso que somente os produtos que tiverem entrada ou saida esteja no resultado, agrupados pela data.
Abraço a todos...
Estou tentando fazer a junção de cinco tabelas, mas não sei motar o select. Peciso da ajuda de voces. Abaixo ´os selects´ que estou tentando, mas não estou conseguido fazer a junção. Preciso que o retorno seja da seguinte forma:
Id_produto |descrição_detalhada| data_entrada |Quan_Entrada| total_Entrada| data_SAida|Quant_Saida| Total_saida
Primeiramente tentei:
SELECT I.ID_PRODUTO, P.descricao_detalhada, v.data_saida, e.data_inclusao ,
CAST(SUM(IE.QUANT_PRODUTO)AS NUMERIC(8,2)) AS QUANT_ENTRADA,
CAST(SUM(I.QUANT_PRODUTO)AS NUMERIC(8,2)) AS QUANT_SAIDA,
SUM(IE.VALOR_TOTAL) AS TOTAL_ENTRADA,
SUM(I.VALOR_TOTAL) AS TOTAL_SAIDA
FROM PRODUTOS P, SAIDAS_PRODUTOS V , ITENS_SAIDAS I , entradas_produtos e , itens_entradas IE
where p.id = i.id_produto or p.id =i.id_produto and v.id = i.id and e.id = i.id
GROUP BY v.data_saida, e.data_inclusao, I.ID_PRODUTO, P.descricao_detalhada;
Depois tentei:
SELECT I.ID_PRODUTO, P.descricao_detalhada,v.data_saida, e.data_inclusao,
CAST(SUM(IE.QUANT_PRODUTO)AS NUMERIC(8,2)) AS QUANT_ENTRADA,
CAST(SUM(I.QUANT_PRODUTO)AS NUMERIC(8,2)) AS QUANT_SAIDA,
SUM(IE.VALOR_TOTAL) AS TOTAL_ENTRADA,
SUM(I.VALOR_TOTAL) AS TOTAL_SAIDA
FROM PRODUTOS P,
left outer join entradas_produtos E on ( e.id = ie.id),
left outer join itens_entradas IE on ( ie.id_produto = p.id),
left outer join SAIDAS_PRODUTOS V on ( V.id = i.id),
left outer join ITENS_SAIDAS I on ( ie.id_produto = p.id),
where P.id = I.id_produto or P.ID = IE.id_produto
GROUP BY v.data_saida, e.data_inclusao,I.ID_PRODUTO, P.descricao_detalhada;
e não obtive sucesso.
Estou estudando sql, para ver se consigo montar, mas não encontro material que esclareça as minhas duvidas. Até agora só encontrei exemplos com duas tabelas utilizando ´inner join´ e poucas informações sobre left outer join.
Preciso que somente os produtos que tiverem entrada ou saida esteja no resultado, agrupados pela data.
Abraço a todos...
Siro
Curtidas 0
Respostas
Afarias
13/07/2004
>> FROM PRODUTOS P,
>> left outer join entradas_produtos E on ( e.id = ie.id),
Não tem vírgula entre os JOINs ::
SELECT
FROM produtos P,
LEFT JOIN itens_entradas IE ON (IE.id_produto = P.id)
LEFT JOIN entradas_produtos E ON (E.id = IE.id)
LEFT JOIN itens_saidas I ON (I.id_produto = P.id)
LEFT JOIN saidas_produtos V ON (V.id = I.id)
WHERE
GROUP BY
cada left [outter] join pode ser substituído por um right [outter] join, full [outter] join ou inner join
T+
>> left outer join entradas_produtos E on ( e.id = ie.id),
Não tem vírgula entre os JOINs ::
SELECT
FROM produtos P,
LEFT JOIN itens_entradas IE ON (IE.id_produto = P.id)
LEFT JOIN entradas_produtos E ON (E.id = IE.id)
LEFT JOIN itens_saidas I ON (I.id_produto = P.id)
LEFT JOIN saidas_produtos V ON (V.id = I.id)
WHERE
GROUP BY
cada left [outter] join pode ser substituído por um right [outter] join, full [outter] join ou inner join
T+
GOSTEI 0