Fórum Como faço essa consulta SQL? #31290

20/09/2008

0

Ola.

Eu tenho duas tabelas:

veja:
CREATE TABLE IF NOT EXISTS clientes (
  id int(4) unsigned NOT NULL auto_increment,
  pessoa char(1) DEFAULT ´´ ,
  fantasia varchar(120) DEFAULT ´0´ ,
  nome varchar(120) DEFAULT ´0´ ,
  rasao varchar(120) DEFAULT ´0´ ,
  cnpj varchar(50) DEFAULT ´0´ ,
  ie varchar(50) DEFAULT ´0´ ,
  cpf varchar(50) DEFAULT ´0´ ,
  rg varchar(50) DEFAULT ´0´ ,
  endereco varchar(200) DEFAULT ´´ ,
  numero varchar(20) ,
  complemento varchar(20) ,
  bairro varchar(80) ,
  cidade varchar(80) ,
  uf char(2) ,
  cep varchar(15) ,
  email varchar(30) ,
  tel1 varchar(15) ,
  tel2 varchar(15) ,
  tel3 varchar(15) ,
  atividade varchar(100) ,
  comissao varchar(4) ,
  comissao2 varchar(4) ,
  comissao3 varchar(4) ,
  login varchar(4) ,
  senha varchar(4) ,
  bloqueio char(1) ,
  filial varchar(4) ,
  PRIMARY KEY (id)
);

CREATE TABLE IF NOT EXISTS devedores (
  Id int(4) unsigned NOT NULL auto_increment,
  pessoa varchar(100) ,
  fantasia varchar(100) ,
  razao varchar(100) ,
  cnpj varchar(50) ,
  ie varchar(50) ,
  nome varchar(100) ,
  cpf varchar(50) ,
  rg varchar(50) ,
  pai varchar(100) ,
  paicpf varchar(50) ,
  mae varchar(100) ,
  maecpf varchar(50) ,
  trabalho varchar(100) ,
  teltrabalho varchar(100) ,
  endereco varchar(100) ,
  numero varchar(20) ,
  complemento varchar(20) ,
  bairro varchar(100) ,
  cidade varchar(100) ,
  UF varchar(50) ,
  cep varchar(10) ,
  email varchar(100) ,
  potencial varchar(20) ,
  cliente varchar(4) ,
  filial varchar(4) ,
  PRIMARY KEY (Id)
);

E tenho um formulario de pesquiza de devedores.
Ele lista assim:
devedor: Fulano
cliente: firma tal
devedor: Bertano
cliente: firma tal
devedor: Cicrano
cliente: firma tanto
devedor: Telprano
cliente: firma faz
devedor: Joselio


O que eu quero fazer é o seguinte:
na hora de listar os devdores, se o Cliente do qual ele é devedor tiver cadastrado com bloqueio=S na abela de clientes,ai ele não retorna os devedores desse cliente.
Na tabela de devedores, quando o devedor esta sendo cadastrado, ele recebe o id do cliente na tabela de devedores.

só esse atrelamento existe entre o devedor e a pessoa a quemele deve.
Mas busca é feita na tabela de devedores.
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 fileld(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");



Carcleo

Carcleo

Responder

Posts

20/09/2008

Emerson Nascimento

primeira coisa: a sua modelagem não está padronizada... o correto seria o campo cliente da tabela devedores ser do mesmo tipo do campo id da tabela clientes.
CREATE TABLE IF NOT EXISTS devedores (
  Id int(4) unsigned NOT NULL auto_increment,
  pessoa varchar(100) ,
  fantasia varchar(100) ,
  razao varchar(100) ,
  cnpj varchar(50) ,
  ie varchar(50) ,
  nome varchar(100) ,
  cpf varchar(50) ,
  rg varchar(50) ,
  pai varchar(100) ,
  paicpf varchar(50) ,
  mae varchar(100) ,
  maecpf varchar(50) ,
  trabalho varchar(100) ,
  teltrabalho varchar(100) ,
  endereco varchar(100) ,
  numero varchar(20) ,
  complemento varchar(20) ,
  bairro varchar(100) ,
  cidade varchar(100) ,
  UF varchar(50) ,
  cep varchar(10) ,
  email varchar(100) ,
  potencial varchar(20) ,
  cliente INT(4), -- campo do mesmo tipo da tabela ´origem´
  filial varchar(4) ,
  PRIMARY KEY (Id)
);


veja se essa instrução te ajuda:
$Resultado = mysql_query(´SELECT * FROM devedores INNER JOIN clientes on (clientes.id = devedores.cliente and clientes.bloqueio<>´N´) WHERE devedores.filial = ´1´ and devedores.baixa= ´N´ order by d.cod´);


Responder

Gostei + 0

20/09/2008

Carcleo

Obrigado.

Funcionou


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar