Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) MYSQL - CONSULTA RETORNA VALOR VAZIO


ArthurCruz

Pergunta

Pessoal, estou tenta fazer uma consulta em uma tabela caixa para saber o fluxo de caixa, porém a consulta so me retorna valor vazio , abaixo segue a consulta e a estruturas das tabelas;

Tabela de Caixa:

id_caixa tipo id_receita id_despesa valor_movimentado dataehora valor_caixa id_usuario

1 RECEITA 1 0 1000 2013-01-31 09:31:41 1000 5

2 RECEITA 2 0 700 2013-01-31 09:32:02 1700 5

3 DESPESA 0 1 75 2013-01-31 09:33:04 1625 5

Tabela de ref_receita

id_ref id_cliente nota_fiscal data_emissao forma_recebimento id_categoria valor

1 1 3011 2013-01-31 DEPOSITO 6 1000

2 2 1512 2013-01-31 DEPOSITO 7 700

Tabela de ref_despesa

id_ref id_fornecedor n_nota_fiscal data_emissao forma_pagamento id_categoria valor

1 3 5050 2013-01-31 DEPOSITO 8 75

Bom galera, no meu select eu preciso cruzar as informações e igualar o id_receita = id_ref (tabela ref_receita) e igualar o id_despesa = id.ref_despesa (tabela despesa). Estou usando a consulta abaixo. Porém o mysql só retorna valor vazio.

SELECT  c.id_caixa, c.id_receita, c.id_despesa, c.valor_movimentado, c.dataehora, c.valor_caixa, 
c.id_usuario, d.id_ref, r.id_ref

FROM tbl_caixa c, 
tbl_ref_receita r, 
tbl_ref_despesas d

WHERE c.id_receita=r.id_ref AND c.id_despesa=d.id_ref

Agradeço desde já.

Editado por Denis Courcy
Colocar codigo sql detro de code
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Bom dia Arthur, se olhar na tabela abaixo verá que nas duas primeiras linhas o id_despesa é 0, que não tem correspondente na tabela despesa, e na última linha o id_receita é 0, sendo que também não tem correspondente na tabela receita, considerando isso nenhuma linha é retornada.

id_caixa tipo id_receita id_despesa valor_movimentado dataehora valor_caixa id_usuario

1 RECEITA 1 0 1000 2013-01-31 09:31:41 1000 5

2 RECEITA 2 0 700 2013-01-31 09:32:02 1700 5

3 DESPESA 0 1 75 2013-01-31 09:33:04 1625 5

Uma solução seria a utilização de left join.

Abraço,

Rafael

Link para o comentário
Compartilhar em outros sites

  • 0
...

Bom galera, no meu select eu preciso cruzar as informações e igualar o id_receita = id_ref (tabela ref_receita) e igualar o id_despesa = id.ref_despesa (tabela despesa). Estou usando a consulta abaixo. Porém o mysql só retorna valor vazio.

SELECT  c.id_caixa, c.id_receita, c.id_despesa, c.valor_movimentado, c.dataehora, c.valor_caixa, 
c.id_usuario, d.id_ref, r.id_ref
FROM tbl_caixa c, 
tbl_ref_receita r, 
tbl_ref_despesas d
WHERE c.id_receita=r.id_ref AND c.id_despesa=d.id_ref
...
Oi Artur, quando você escreve um sql como o acima, está implícito que você está usando INNER JOIN para obter o conjunto interseção das tabelas. Porém na tabela caixa não há nenhum campo que informe despesas e receitas no mesmo registro. Em vez disso você usa id_ref para obter ora um registro despesa, ora um registro receita. A intercessão deste tipo de conjunto tem sempre como resultado um conjunto vazio. A solução é usar o LEFT JOIN que é a intercessão dos conjuntos A com (A-B). Veja abaixo:
SELECT c.id_caixa, c.id_receita, c.id_despesa, c.valor_movimentado, c.dataehora, c.valor_caixa,
c.id_usuario, d.id_ref, r.id_ref
FROM tbl_caixa c
left join tbl_ref_receita r on c.id_receita=r.id_ref
left join tbl_ref_despesas d on c.id_despesa=d.id_ref

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...