Inner Join causa duplicidade ???
18/03/2015
0
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
Posts
19/03/2015
Marcos P
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 ?!?
19/03/2015
Ronaldo Lanhellas
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
19/03/2015
Ronaldo Lanhellas
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
19/03/2015
Ronaldo Lanhellas
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
19/03/2015
Jair Souza
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20150319-145340.jpg[/img]
19/03/2015
Marcos P
[img]http://arquivo.devmedia.com.br/forum/imagem/378439-20150319-152330.png[/img]
19/03/2015
Jair Souza
[img]http://arquivo.devmedia.com.br/forum/imagem/378439-20150319-152330.png[/img]
Valeu, descobrimos simultaneamente.
Clique aqui para fazer login e interagir na Comunidade :)