Vários OR's em um SQL

7 respostas
jeanmalvessi

Bom dia!

Estou tendo algumas dificuldades para fazer um sql que busque na tabela de contas a receber, as contas de um determinado cliente. O que está me dificultando é que este cliente pode ser avulso, de um pedido, de um contrato, de uma vendacondicional ou de um contratodomiciliar.

Tentei fazer o seguinte:

SELECT * FROM contasreceber
WHERE estabelecimento = 1
AND (pessoa = 165
OR pedido.cliente = 165
OR contrato.cliente = 165
OR ordemservico.cliente = 165
OR vendacondicional.cliente = 165
OR contrato_domicilio.cliente = 165)

Mas está me retornando este erro:

ERROR: missing FROM-clause entry for table "pedido"
LINE 4: OR pedido.cliente = 165

7 Respostas

jhaga

jeanmalvessi:
Bom dia!
… é que este cliente pode ser avulso, de um pedido, de um contrato, de uma vendacondicional ou de um contratodomiciliar.

SELECT * FROM contasreceber WHERE estabelecimento = 1 AND (pessoa = 165 OR pedido.cliente = 165 OR contrato.cliente = 165 OR ordemservico.cliente = 165 OR vendacondicional.cliente = 165 OR contrato_domicilio.cliente = 165)

Se ele pode vir de outras tabelas, não estaria faltando você fazer alguns INNER JOINs não?

jeanmalvessi

Mas como faço um INNER JOIN em uma cláusula OR ?

xandevieira

Faz a pesquisa pelo campo do relacionamento de cada tabela, ai não precisa fazer join

jeanmalvessi

Mas aí eu vou ter apenas o código do pedido, contrato, etc… e dentro de cada um desses tem o código do cliente, que é o que eu preciso

xandevieira

então use left join

P

Arruma essa modelagem !!!

jeanmalvessi

Resolvi utilizando várias pesquisas distintas e juntando todas… não manjo muito de SQL :cry:

Criado 7 de agosto de 2012
Ultima resposta 7 de ago. de 2012
Respostas 7
Participantes 4