Consulta duas tabelas

6 respostas
wilsontads

eu tenho duas tabelas, uma cliente e uma locação.
se na cliente eu faço select * from cliente where situacao=‘ocupado’.
ela me retorna todos os clientes com esse status…
porem, quando eu faço o join com a tabela locação, se esse cliente tem
duas locações, a consulta me traz o cliente duas vezes… e eu quero apenas uma vez.
alguem sabe como posso proceder?

SELECT cliente.*, locacao.* FROM locacao INNER JOIN cliente ON (locacao.idcliente=cliente.id) WHERE cliente.situacao = 'Ocupado'

Assim, ele me traz o mesmo cliente, repetido, conforme o numero de locações

6 Respostas

ViniGodoy

Diga exatamente:

  1. O que você quer retornar;
  2. E por que você está fazendo esse join.

Uma das formas seria fazer um SELECT DISTINCT, mas nesse caso você não poderia retornar nenhum dado da locação.

luxu

tente colocar algo assim…

SELECT cliente.*, locacao.* FROM locacao INNER JOIN cliente ON (locacao.idcliente=cliente.id) WHERE cliente.situacao = 'Ocupado' AND cliente.id = locacao.id

wilsontads

fiz assim… nao sei se 'e a melhor forma, mais resolveu meu problema rs.
obg pela ajuda povo.

SELECT cliente.*, locacao.* FROM locacao INNER JOIN cliente ON (locacao.idcliente=cliente.id) WHERE cliente.situacao = 'Ocupado' GROUP BY cliente.id

A

wilsontads:

SELECT cliente.*, locacao.* FROM locacao INNER JOIN cliente ON (locacao.idcliente=cliente.id) WHERE cliente.situacao = 'Ocupado' GROUP BY cliente.id

E esse select está funcionando? Em que banco?

hvivox

como assim resolveu ou não?

wilsontads

resolveu…

Criado 11 de setembro de 2011
Ultima resposta 12 de set. de 2011
Respostas 6
Participantes 5