Inner Join causa duplicidade ???

.NET

18/03/2015

É 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

Curtidas 0

Respostas

Marcos P

Marcos P

18/03/2015

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 ?!?
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

18/03/2015

É 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
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

18/03/2015

É 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
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

18/03/2015

É 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
GOSTEI 0
Jair Souza

Jair Souza

18/03/2015

Parece que falta alguma coisa...

[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20150319-145340.jpg[/img]
GOSTEI 0
Marcos P

Marcos P

18/03/2015

Tenta assim...

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

Jair Souza

18/03/2015

Funcionou, muito obrigado VALEU MUITO, !

Ficou assim :

[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20150319-153133.jpg[/img]
GOSTEI 0
Jair Souza

Jair Souza

18/03/2015

Tenta assim...

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



Valeu, descobrimos simultaneamente.
GOSTEI 0
Marcos P

Marcos P

18/03/2015

Beleza !!!
GOSTEI 0
POSTAR