logo DevMedia  
Home Entenda o site Revistas Canais Cursos Palestras Suporte Fórum +Serviços Assine Compre Créditos

Edição do Mês
  Fórum DevMedia
Fórum de Discussão
Conheça também o NOVO fórum da DevMedia, no endereço: www.devmedia.com.br/forum
O novo fórum possui diversas vantagens! Saiba mais em
www.devmedia.com.br/articles/viewcomp.asp?comp=14726
Estamos sempre trabalhando na melhora do site como um todo! Bons códigos!
Equipe DevMedia

 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos  RegistrarRegistrar   
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 
Edição do Mês

Erro consulta 3 tabelas - estoque
 
Novo Tópico   Responder Mensagem    Fórum DevMedia - Índice do Fórum -> MySQL
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
vagner.oliveira
Membro Pleno


Registrado em: Segunda-Feira, 20 de Dezembro de 2004
Mensagens: 271

MensagemEnviada: Qua Jul 22, 2009 11:43 am    Assunto: Erro consulta 3 tabelas - estoque Responder com Citação

tenho 3 tabelas prod_entrada, prod_inf, prod_saida

na minha tabela de saida estão os seguintes itens:
C?o:

SELECT *
FROM `prod_saida`
WHERE data_venda = '2009-07-23'
LIMIT 0 , 30


Que me retorna:
C?o:

indice   cod_prod  cod_revenda   cod_cli   data_venda   quant   preco_venda
   14    1           4           101         2009-07-23    3    159.12
   15    1           2           101         2009-07-23    5    93.60
   16    10           1           10         2009-07-23    1    390.00


Então criei uma consulta SQL para trocar os valores dos códigos pelos nomes nas tabelas:

C?o:

SELECT c.nome, pi.descricao, ps.quantidade, ps.data_venda, ps.preco_venda, f.razao
FROM prod_saida ps
INNER JOIN clientes c ON ps.cod_cli = c.codcli
INNER JOIN prod_inf pi ON ps.cod_prod = pi.cod_prod
INNER JOIN fornecedor f ON ps.cod_revenda = f.cod_revenda
WHERE data_venda = '2009-07-22'
ORDER BY ps.data_venda
LIMIT 0 , 30


Só que me retorna com erros:
C?o:

nome     descricao     quant     data_venda      preco_venda     razao 
Carla      Mouse         2    2009-07-22    37.44       Empresa 1
Carla      Mouse          1    2009-07-22    53.04       Empresa2 LTDA 
Vagner    Mouse         1    2009-07-22    18.72       Empresa 1
Vagner    Monitor 19"    1    2009-07-22    365.04       Empresa 1
Carla          a         2    2009-07-22    37.44       Empresa 1
Carla          a          1    2009-07-22    53.04       Empresa2 LTDA 
Vagner         a         1    2009-07-22    18.72       Empresa 1
Carla     Windows        2    2009-07-22    37.44       Empresa 1
Carla     Windows        1    2009-07-22    53.04       Empresa2 LTDA 
Vagner    Windows        1    2009-07-22    18.72       Empresa 1


Legenda:

tab_clientes
Vagner cod_cli = 100
Carla cod_cli = 102

tab_fornecedores
Empresa 1 cod_revenda = 2
Empresa2 LTDA cod_revenda = 4

tab_prod
a cod_prod = 1 cod_revenda = 4
Windows cod_prod = 1 cod_revenda = 2
Mouse cod_prod = 1 cod_revenda = 1
Monitor 19" cod_prod = 33 cod_revenda = 2

Notem que o produto Windows não foi vendido, tentei diversas maneiras, mas não consegui resolver este problema
_________________
Poste o procedimento que utilizou para solucionar sua dúvida, para os outros saibam como fazer também.

Microupdate Informática
Fone (51) 3023-63-95
Porto Alegre - RS
http://www.microupdate.com.br
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
emerson.en
Membro Senior


Registrado em: Terça-Feira, 16 de Março de 2004
Mensagens: 2503
Localiza?: São Paulo - SP - Brasil

MensagemEnviada: Qua Jul 22, 2009 1:16 pm    Assunto: Responder com Citação

não dá pra perceber onde está o erro porque você mostrou uma instrução filtrando os dados do dia 22/Julho/2009 e a outra filtrando os dados do dia 23/julho/2009
_________________
Ao postar dúvidas informe sempre o SGBD e versão, linguagem utilizada, componentes de conexão/acesso e demais informações pertinentes ao problema...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar Email MSN Messenger
vagner.oliveira
Membro Pleno


Registrado em: Segunda-Feira, 20 de Dezembro de 2004
Mensagens: 271

MensagemEnviada: Qui Jul 23, 2009 11:25 am    Assunto: Re: Erro consulta 3 tabelas - estoque Responder com Citação

Corrigido

vagner.oliveira escreveu:
tenho 3 tabelas prod_entrada, prod_inf, prod_saida

na minha tabela de saida estão os seguintes itens:
C?o:

SELECT *
FROM `prod_saida`
WHERE data_venda = '2009-07-23'
LIMIT 0 , 30


Que me retorna:
C?o:

indice   cod_prod  cod_revenda   cod_cli   data_venda   quant   preco_venda
   14    1           4           101         2009-07-23    3    159.12
   15    1           2           101         2009-07-23    5    93.60
   16    10           1           10         2009-07-23    1    390.00


Então criei uma consulta SQL para trocar os valores dos códigos pelos nomes nas tabelas:

C?o:

SELECT c.nome, pi.descricao, ps.quantidade, ps.data_venda, ps.preco_venda, f.razao
FROM prod_saida ps
INNER JOIN clientes c ON ps.cod_cli = c.codcli
INNER JOIN prod_inf pi ON ps.cod_prod = pi.cod_prod
INNER JOIN fornecedor f ON ps.cod_revenda = f.cod_revenda
WHERE data_venda = '2009-07-23'
ORDER BY ps.data_venda
LIMIT 0 , 30


Só que me retorna com erros:
C?o:

nome       descricao    quantidade    data_venda     preco_venda    razao
Abade      Mouse      3      2009-07-23   159.12      Empresa 2
Abade      Mouse      5      2009-07-23   93.60      Empresa
Ciclano      Placa de    1      2009-07-23   390.00      Empresa 3
Abade      a      3      2009-07-23   159.12      Empresa 2
Abade      a      5      2009-07-23   93.60      Empresa
Abade      Windows      3      2009-07-23   159.12      Empresa 2
Abade      Windows      5      2009-07-23   93.60      Empresa


Legenda:

tab_clientes
Abade cod_cli = 101
Ciclano cod_cli = 10

tab_fornecedores
Empresa cod_emp = 2
Empresa 2 cod_emp = 4
Empresa 3 cod_emp = 1

tab_prod
Mouse cod_prod = 1 cod_revenda = 1
a cod_prod = 1 cod_revenda = 4
Windows cod_prod = 1 cod_revenda = 2

Notem que o produto Windows não foi vendido, tentei diversas maneiras, mas não consegui resolver este problema

_________________
Poste o procedimento que utilizou para solucionar sua dúvida, para os outros saibam como fazer também.

Microupdate Informática
Fone (51) 3023-63-95
Porto Alegre - RS
http://www.microupdate.com.br
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
emerson.en
Membro Senior


Registrado em: Terça-Feira, 16 de Março de 2004
Mensagens: 2503
Localiza?: São Paulo - SP - Brasil

MensagemEnviada: Qui Jul 23, 2009 12:22 pm    Assunto: Responder com Citação

continua confuso... na sua instrução você relaciona a tabela prod_inf, porém dá exemplo de conteúdo da tabela tab_prod...

bom, vamos lá...

você afirma que o produto 'Windows' não foi vendido, porém na sua tabela de saídas existe a venda do código 1, e por isso são listados os produtos 'Windows', 'a' e 'Mouse' (todos têm código 1).

pelo que eu entendi o problema se dá porque você tem vários produtos com o mesmo código, diferenciando-os pelo código do fornecedor.
para que funcione como você quer, é preciso fazer a filtragem pelo fornecedor na sua instrução:

SELECT c.nome, pi.descricao, ps.quantidade, ps.data_venda, ps.preco_venda, f.razao
FROM prod_saida ps
INNER JOIN clientes c ON ps.cod_cli = c.codcli
INNER JOIN prod_inf pi ON ps.cod_prod = pi.cod_prod and ps.cod_revenda = pi.cod_revenda
INNER JOIN fornecedor f ON ps.cod_revenda = f.cod_revenda
WHERE data_venda = '2009-07-23'
ORDER BY ps.data_venda
LIMIT 0 , 30

_________________
Ao postar dúvidas informe sempre o SGBD e versão, linguagem utilizada, componentes de conexão/acesso e demais informações pertinentes ao problema...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar Email MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    Fórum DevMedia - Índice do Fórum -> MySQL Todos os horários são GMT - 3 Hours
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibído.
Responder Tópicos Proibído
Editar Mensagens: Proibído.
Excluir Mensagens: Proibído.
Votar em Enquetes: Proibído.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB