Inner Join causa duplicidade ???

18/03/2015

0

É windows form.
Tendo a tabela " Locação " que está ligada a tabela " ItemLocação ", quando uma locação tem mais de um itemlocação, e carrega o grid de "Locação" aparece uma linha de locação para cada itemlocação.(Como na imagem abaixo)

Neste select que tem um INNER JOIN, para poder filtrar as que não tem a data de devolução.

Alguém sabe como resolver isto ?

[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20150318-213827.jpg[/img]
Jair Souza

Jair Souza

Responder

Posts

19/03/2015

Marcos P

Jair,

Essa query está correta !

Repare que você fez a ligação das tabelas para poder relacionar dados da Locação ( ID, Locatario, Funcionario, Hora, DataSaida, Valor e DataEntrega ) e um dado do Item ( DataDevolução ).

Ou seja, sua consulta não é mais de locações, mas sim de itens da locação.

Se você realmente precisa da DataDevolução, sugiro focar a query em itens ( colocando mais colunas dessa tabela ).

Se você quer focar em locações, elimine o relacionamento entre as tabelas e tente obter a Data de devolução em outro ponto da aplicação.

Agora, se você quer manter isso assim mesmo, pode tentar :

> Faz sentido relacionar itens sem data de devolução ? Senão, coloque uma condição na condição na query para eliminar esses casos...
> Coloque DISTINCT na query...
> Em ambos os casos as repetições continuaram, mas em menor quantidade

Ok ?!?
Responder

19/03/2015

Ronaldo Lanhellas

É windows form.
Tendo a tabela " Locação " que está ligada a tabela " ItemLocação ", quando uma locação tem mais de um itemlocação, e carrega o grid de "Locação" aparece uma linha de locação para cada itemlocação.(Como na imagem abaixo)

Neste select que tem um INNER JOIN, para poder filtrar as que não tem a data de devolução.

Alguém sabe como resolver isto ?

[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20150318-213827.jpg[/img]


Você pode usar o DISTINCT() para evitar a duplicidade. Assim:

SELECT distinct(loca) FROM locacao loca inner join item_locacao item on loca.id = item.id_locacao
Responder

19/03/2015

Ronaldo Lanhellas

É windows form.
Tendo a tabela " Locação " que está ligada a tabela " ItemLocação ", quando uma locação tem mais de um itemlocação, e carrega o grid de "Locação" aparece uma linha de locação para cada itemlocação.(Como na imagem abaixo)

Neste select que tem um INNER JOIN, para poder filtrar as que não tem a data de devolução.

Alguém sabe como resolver isto ?

[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20150318-213827.jpg[/img]


Você pode usar o DISTINCT() para evitar a duplicidade. Assim:

SELECT distinct(loca) FROM locacao loca inner join item_locacao item on loca.id = item.id_locacao
Responder

19/03/2015

Ronaldo Lanhellas

É windows form.
Tendo a tabela " Locação " que está ligada a tabela " ItemLocação ", quando uma locação tem mais de um itemlocação, e carrega o grid de "Locação" aparece uma linha de locação para cada itemlocação.(Como na imagem abaixo)

Neste select que tem um INNER JOIN, para poder filtrar as que não tem a data de devolução.

Alguém sabe como resolver isto ?

[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20150318-213827.jpg[/img]


Você pode usar o DISTINCT() para evitar a duplicidade. Assim:

SELECT distinct(loca) FROM locacao loca inner join item_locacao item on loca.id = item.id_locacao
Responder

19/03/2015

Jair Souza

Parece que falta alguma coisa...

[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20150319-145340.jpg[/img]
Responder

19/03/2015

Marcos P

Tenta assim...

[img]http://arquivo.devmedia.com.br/forum/imagem/378439-20150319-152330.png[/img]
Responder

19/03/2015

Jair Souza

Tenta assim...

[img]http://arquivo.devmedia.com.br/forum/imagem/378439-20150319-152330.png[/img]



Valeu, descobrimos simultaneamente.
Responder

19/03/2015

Marcos P

Beleza !!!
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar