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

como faço essa consulta?


Carlos Rocha

Pergunta

tenho 2 tabelas.

Devedores

Clientes

cada cliente tem seus devedores

Agora eu quero fazer um consulta dizendo para seleionar tudo da tabela devedores onde o cliente=1 porem só selecione se o cliente não tiver o filel(campo) bloqueio='N'

O problema é que nehum campo da teabela devedores faz referencia a condição de bloqueio da tabala de cliente

tentei assim mas num deu:

$Resultado = mysql_query("SELECT * FROM devedores left JOIN clientes on clientes.bloqueio='N' WHERE devedores.cliente='$id_cliente' and devedores.filial = '1' and devedores.baixa= 'N' order by d.cod");

como faço essa consulta?

Editado por Carlos Rocha
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Tche, sem as estruturas das tabelas fica difícil, mas olha como eu faria...

select ... (campos que você deseja) ...

from devedores d , clientes c

where c.cod(pk)=d.cliente and c.bloqueio='N' and d.filial='1' and d.baixa='N'

order by d.cod

Se você não entendeu, ou quiser trocar uma idéia, coloca as estruturas das tabelas....

vlw

Link para o comentário
Compartilhar em outros sites

  • 0

uai... o Nicholas está coberto de razão...

Olha só se ajuda...

tabela clientes

codigo

nome

telefone

bloqueado

tabela promissorias

codigo_cliente

promissoria_numero

promissoria_valor

Obviamente, cada promissoria tem o codigo_cliente vinculado a um registro

de cliente pelo codigo dele... exemplo:

cliente 003928 Juan Palacio Tesvez 3240-2020 N

tem as promissorias

004892A 10,80

039899C 22,60

então

select clientes.*, promissorias.*
from clientes
inner join promissorias
  on (clientes.codigo=promissorias.codigo_cliente)
where clientes.bloqueado="N";
* o inner join liga cada promissoria a seu respectivo cliente * o where limit a consulta para que só apareçam os clientes que não estejam bloqueados. e se eu quero incluir também os clientes que não tenham promissórias???? aí sim uso o left outer...
select clientes.*, promissorias.*
from clientes
left outer join promissorias
  on (clientes.codigo=promissorias.codigo_cliente)
where clientes.bloqueado="N";
isso aí diz ao MySQL que quero todos os clientes (a tabela da esquerda), que tenham ou não registros na tabela promissorias (a da direita)... e, claro, limitando a consulta somente aos bloqueados... e se eu quero uma consulta mais rápida? aí, posso usar subqueries...
select oscliqquero.*, promissorias.*
from 
  (select clientes.*
   from clientes
   where bloqueado="N"
  ) as oscliqquero
left outer join promissorias
  on (oscliqquero.codigo=promissorias.codigo_cliente);

isso fez com que o Mysql primeiro criasse uma consulta (oscliqquero) só com os

clientes "não-bloqueados" e, aí sim, ligasse a essa consulta à de promissórias,

independente de existir ou não promissória para esses clientes...

Ok?

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,5k
×
×
  • Criar Novo...