2014-10-27 11:28 GMT-02:00 Eloi Ribeiro <[email protected]>:

> Vou tentar explicar melhor.
>
> Esta tabela indica-me que:
> 5=12842
> 5=62409
> 5=62410
> 12842=5
> 12842=62409
> 12842=62410
> 62409=5
> 62409=12842
> 62409=62410
> 62410=5
> 62410=12842
> 62410=62409
>
> Então se 5=12842, 5=62409 e 5=62410, já sei que 12842=62409, 12842=62410 e
> 62410=62409. Estes três últimos resultados estão a repetir a mesma
> informação.


Agora está mais claro. Vamos lá, supondo a tabela "dados(a int, b int)", se
não me enganei em algo, a seguinte consulta trará o resultado esperado:

    WITH elements(a,b) AS (
        SELECT DISTINCT least(a, b), greatest(a, b)
        FROM dados
    )
    SELECT e1.* FROM elements e1
    WHERE NOT EXISTS(SELECT 1 FROM elements e2 WHERE e1.a = e2.b);

     a |   b
    ---+-------
     5 | 12842
     5 | 62410
     5 | 62409
    (3 rows)

Verifique em seus dados se atingem o resultado esperado.

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a