Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Boris

Select 2 Tabelas

Recommended Posts

Galera estou com o seguinte problema de select

 

Tenho um Select que soma todos os produtos que foram vendidos em um periodo.

 

sql1 = 
"SELECT
    CADASTRO_CLI_FOR.NOME_CLIFOR,
    PRODUTOS.PRODUTO,
    Sum(LOJA_VENDA_PRODUTO.QTDE) AS 'SQTDE' 
FROM 
    CADASTRO_CLI_FOR,
    LOJA_VENDA_PRODUTO,
    PRODUTOS 
WHERE 
    PRODUTOS.PRODUTO = LOJA_VENDA_PRODUTO.PRODUTO 
AND CADASTRO_CLI_FOR.COD_CLIFOR = LOJA_VENDA_PRODUTO.CODIGO_FILIAL 
AND PRODUTOS.PRODUTO<>'' 
AND LOJA_VENDA_PRODUTO.DATA_VENDA>='2009-11-09' 
AND LOJA_VENDA_PRODUTO.DATA_VENDA<='2009-11-13' 
AND CADASTRO_CLI_FOR.NOME_CLIFOR='ANALIA FRANCO (NOVA)' 
GROUP BY
    CADASTRO_CLI_FOR.NOME_CLIFOR,
    PRODUTOS.PRODUTO 
ORDER BY 
    NOME_CLIFOR ASC" 

E outro que mostra meu estoque atual

 

sql2 = 
   "SELECT
    ESTOQUE_PRODUTOS.FILIAL,
    ESTOQUE_PRODUTOS.PRODUTO,
    ESTOQUE_PRODUTOS.ESTOQUE
FROM 
    ESTOQUE_PRODUTOS 
WHERE 
    ESTOQUE<>'0' 
AND ESTOQUE_PRODUTOS.PRODUTO<>''"

 

Ele completo

<%
sql1 = 
   "SELECT
    CADASTRO_CLI_FOR.NOME_CLIFOR,
    PRODUTOS.PRODUTO,
    Sum(LOJA_VENDA_PRODUTO.QTDE) AS 'SQTDE'
FROM 
    CADASTRO_CLI_FOR,
    LOJA_VENDA_PRODUTO,
    PRODUTOS
WHERE 
    PRODUTOS.PRODUTO = LOJA_VENDA_PRODUTO.PRODUTO 
AND CADASTRO_CLI_FOR.COD_CLIFOR = LOJA_VENDA_PRODUTO.CODIGO_FILIAL 
AND PRODUTOS.PRODUTO<>'' 
AND LOJA_VENDA_PRODUTO.DATA_VENDA>='2009-11-09' 
AND LOJA_VENDA_PRODUTO.DATA_VENDA<='2009-11-13' 
AND CADASTRO_CLI_FOR.NOME_CLIFOR='ANALIA FRANCO (NOVA)' 
GROUP BY 
    CADASTRO_CLI_FOR.NOME_CLIFOR,
    PRODUTOS.PRODUTO 
ORDER BY 
    NOME_CLIFOR ASC" 

sql2 = 
   "SELECT
    ESTOQUE_PRODUTOS.FILIAL,
    ESTOQUE_PRODUTOS.PRODUTO,
    ESTOQUE_PRODUTOS.ESTOQUE
FROM 
    ESTOQUE_PRODUTOS 
WHERE 
    ESTOQUE<>'0' 
AND ESTOQUE_PRODUTOS.PRODUTO<>''"

set objRS2 = conexao.execute(sql2) 'executa a cláusula sql
set objRS1 = conexao.execute(sql1) 'executa a cláusula sql

WHILE NOT OBJRS1.EOF

%>


<%=objRS1("nome_clifor")%> - <%=objRS1("produto")%> - <%=objRS1("sqtde")%>--<%=objRS2("ESTOQUE")%><br>


<%
OBJRS1.MoveNext
Wend
%>

 

o que acontece...

 

não estou conseguindo trazer o estoque correto que se refere ao produto.

 

Por Exemplo:

 

ANALIA FRANCO (NOVA) - 09955 - 2--5

 

Nesta minha loja no produto 09955 eu vendi 2 produtos no periodo porem esse 5 que seria o estoque atual está errado pois eu tenho 22

 

se eu fizer uma consulta no meu banco SQL usando filtro para este produto aparece o estoque correto.

 

O que estou fazendo de errado ????

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentou colocar um movenext no rs2 tb ?

 

 

Já sim mas não rola, ele mudar de valor mas não passa o valor correto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu faria algo parecido com o que está abaixo. possivelmente não funcione pois não sei os relacionamentos corretos das tabelas e percebi que está assossiando o nome do produto e não o código, seria bom refazer essa parte

SELECT
	C.NOME_CLIFOR,
	P.PRODUTO,
	SUM(L.QTDE) AS 'SQTDE',
	E.FILIAL,
	E.ESTOQUE,
	E.PRODUTO
FROM 
	CADASTRO_CLI_FOR C INNER JOIN
	LOJA_VENDA_PRODUTO L ON C.COD_CLIFOR = L.CODIGO_FILIAL INNER JOIN
	PRODUTOS P ON P.PRODUTO = L.PRODUTO INNER JOIN	
	(		
	SELECT
		E.FILIAL,
		E.PRODUTO,
		E.ESTOQUE
	FROM 
		ESTOQUE_PRODUTOS E
	WHERE 
		E.ESTOQUE <> '0' AND 
		E.PRODUTO <> ''
	) E ON E.PRODUTO = L.PRODUTO	
WHERE 
	P.PRODUTO <> '' AND 
	L.DATA_VENDA >= '2009-11-09' AND 
	L.DATA_VENDA <= '2009-11-13' AND 
	C.NOME_CLIFOR = 'ANALIA FRANCO (NOVA)' 
GROUP BY 
	C.NOME_CLIFOR,
	P.PRODUTO,
	E.FILIAL,
	E.ESTOQUE,
	E.PRODUTO
ORDER BY 
	NOME_CLIFOR ASC

mas se não quiser assim, o seu deve estar exibindo errado pois não estás colocando o produto no WHERE do estoque

Compartilhar este post


Link para o post
Compartilhar em outros sites

E se criar um valor no where do rs2 condicionando a só pegar as informações referente ao produto do rs1?

 

 

Eu tinha feito assim:

 


WHILE NOT OBJRS1.EOF
	WHILE NOT OBJRS2.EOF
%>


<%=objRS1("nome_clifor")%> - <%=objRS1("produto")%> - <%=objRS1("sqtde")%>--<%=objRS2("ESTOQUE")%><br>


<%
	OBJRS2.MoveNext
	WEND
OBJRS1.MoveNext
Wend
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como faço para concatenar dados de 2 tabelas:

 

set rs2=server.createobject("adodb.recordset")
stct="SELECT * from peddet where idpedido='1'"'&Session("pedid")
set rs2 = conn.execute(stct)

set rs3=server.createobject("adodb.recordset")

DO WHILE NOT rs2.EOF
proct="SELECT nome from produtos where id="&rs2("prodid")
set rs3 = conn.execute(proct)

response.write "<tr><td colspan='2'>"&rs3("nome")&"</td><td>"&rs2("qtd")&"</td><td>"&FormatNumber(rs2("preco"),2)&"</td></tr>"

rs2.movenext
loop

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz um INNER JOIN na tabela

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que eu postei deu que erro?

 

Desculpa a demora.

Eu estava tentando entender o que você fez mas não consegui.

 

É exatamente o que você fez porem como o Produto tem cores no que você fez ele me separa por cor e na realidade teria que agrupar tambem...

 

Eu tenho os selects que consigo consultar exatamente o que quero porem não estou conseguindo agrupar com o inner Join será que você poderia me dar uma força.

 

E se puder me indicar algum lugar que eu possa entender como funciona o inner join.

 

Descubro o quanto foi vendido

SELECT 
	CADASTRO_CLI_FOR.NOME_CLIFOR,
	PRODUTOS.PRODUTO,
	Sum(LOJA_VENDA_PRODUTO.QTDE) AS 'QTDE DE VENDA' 
FROM 
	CADASTRO_CLI_FOR,
	LOJA_VENDA_PRODUTO,
	PRODUTOS
WHERE 
	PRODUTOS.PRODUTO = LOJA_VENDA_PRODUTO.PRODUTO 
AND CADASTRO_CLI_FOR.COD_CLIFOR = LOJA_VENDA_PRODUTO.CODIGO_FILIAL 
AND NOME_CLIFOR='ANALIA FRANCO (NOVA)'
AND PRODUTOS.PRODUTO='17584'

GROUP BY 
	CADASTRO_CLI_FOR.NOME_CLIFOR,
	PRODUTOS.PRODUTO 
ORDER BY NOME_CLIFOR ASC

Descubro o quanto tenho no estoque

SELECT 
	ESTOQUE_PRODUTOS.FILIAL AS 'FILIAL',
	ESTOQUE_PRODUTOS.PRODUTO,
	Sum(ESTOQUE_PRODUTOS.ESTOQUE) AS 'ESTOQUE TOTAL'
FROM
	ESTOQUE_PRODUTOS
GROUP BY 
	ESTOQUE_PRODUTOS.FILIAL,
	ESTOQUE_PRODUTOS.PRODUTO
HAVING
	(ESTOQUE_PRODUTOS.FILIAL='analia franco (nova)')
AND (ESTOQUE_PRODUTOS.PRODUTO='17584')

Descubro o quanto foi feito de troca

SELECT
	LOJA_VENDA_TROCA.CODIGO_FILIAL,
	LOJA_VENDA_TROCA.PRODUTO,
	Sum(LOJA_VENDA_TROCA.QTDE) AS 'QTDE DE TROCA'
FROM 
	LOJA_VENDA_TROCA LOJA_VENDA_TROCA
GROUP BY 
	LOJA_VENDA_TROCA.CODIGO_FILIAL,
	LOJA_VENDA_TROCA.PRODUTO
HAVING
	(LOJA_VENDA_TROCA.CODIGO_FILIAL='000024') 
AND (LOJA_VENDA_TROCA.PRODUTO='17584')

Obrigado pela força.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vctem relacionamento entre as tabelas, na verdade, a impôrtancia de uma modelagem de dados bem definida até os mínimos detalhes, como os campos de relacionamentos, um velho ditado diz, que um relacionamento bem definido é a alma do aplicativo, pois daí saem todas as consultas e operações com o banco, influenciando diretamente na otimização e performance do aplicativo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.