Array
(
)

Inner Join causa duplicidade ???

Jair Souza
   - 18 mar 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 ?
Clique na imagem para abrir em uma nova janela

Marcos P
   - 19 mar 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 ?!?

Ronaldo Lanhellas
   - 19 mar 2015


Citação:
É 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 ?

Clique na imagem para abrir em uma nova janela


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

#Código

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

Ronaldo Lanhellas
   - 19 mar 2015


Citação:
É 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 ?

Clique na imagem para abrir em uma nova janela


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

#Código

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

Ronaldo Lanhellas
   - 19 mar 2015


Citação:
É 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 ?

Clique na imagem para abrir em uma nova janela


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

#Código

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

Jair Souza
   - 19 mar 2015

Parece que falta alguma coisa...

Clique na imagem para abrir em uma nova janela

Marcos P
   - 19 mar 2015

Tenta assim...

Clique na imagem para abrir em uma nova janela

Jair Souza
   - 19 mar 2015

Funcionou, muito obrigado VALEU MUITO, !

Ficou assim :

Clique na imagem para abrir em uma nova janela

Jair Souza
   - 19 mar 2015


Citação:
Tenta assim...

Clique na imagem para abrir em uma nova janela


Valeu, descobrimos simultaneamente.

Marcos P
   - 19 mar 2015

Beleza !!!