• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

greed

Dúvida numa query em Access

6 mensagens neste tópico

Boas,

Estou aqui com uma dúvida existencial, será que alguma alma me pode ajudar..

Tenho a seguinte tabela xpto:

app_origem | app_destino | tipo_ligacao

A | B | C

B | A | C

E | D | Z

A | B | C

Queria fazer uma query que me permitisse eliminar todas as entradas que tenham o mesmo tipo de ligação e cuja a aplicação de origem e destino estejam repetidas, quer na coluna app_origem quer na coluna app_destino.

O resultado desta query seria o seguinte:

A | B | C

E | D | Z

Acho que é óbvio que vai ter que ser usado o UNIQUE para remover entradas na tabela iguais. O problema é mesmo eliminar entradas com o mesmo tipo de ligação mas cuja app_destino e app_origem estejam trocadas.  :hmm:

Se alguém pudesse ajudar, é que já estou  :wallbash:

Desde já obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não entendi..... faz um exemplo porque axo que o exemplo esta errado :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Outro exemplo + simples:

app_origem | app_destino | tipo_ligacao

A | B | C

B | A | C

Como vêm são as mesmas aplicações só que o A e B estão trocados.

Resultado:

app_origem | app_destino | tipo_ligacao

A | B | C

Ou seja, a entrada com B | A | C é eliminada.

Já está mais perceptível?

Eu pretendo fazer esta query pois quero eliminar entradas que não me trazem informação útil. Não me interessa saber que A e B têm uma ligação C duas vezes...por isso, elimino uma destas entradas..agora, a questão é como..

:)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o problema aqui e que os 2 iam ser eliminados a menos que fizesses um select top 1. porque a=a e b=b entao ele vai seleccionar os 2....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Assim como está é complicado.

Se a coluna tivesse um id seria simples.

Assim:

select distinct a.origem, a.destino, a.tipo from Ligacoes a
where not exists(
select 1 from Ligacoes
where a.origem = destino
and a.destino = origem
and a.tipo = tipo
and a.id > id)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Thanks pela resposta. Tentei fazer em Access com o seguinte código mas retornou-me uma tabela vazia:

SELECT DISTINCT a.ListaInterfaces.[APLICACAO ORIGEM] AS Expr1, a.ListaInterfaces.[APLICACAO DESTINO] AS Expr2, a.ListaInterfaces.[TIPO DE INTERFACE] AS Expr3
FROM ListaInterfaces AS a
WHERE NOT EXISTS(
        SELECT 1 FROM ListaInterfaces
        WHERE Expr1 = ListaInterfaces.[APLICACAO DESTINO]
        AND Expr2 = ListaInterfaces.[APLICACAO ORIGEM]
        AND Expr3 = ListaInterfaces.[TIPO DE INTERFACE]
        AND a.ListaInterfaces.[iD] > ListaInterfaces.[iD]
);

Algum erro berrante que salte logo à vista?!  :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora