Ho una domanda relativa a newbyl.sql seleziona query nella stessa tabella
diciamo che ho questo semplice tabella:
A B
------ ------
a b
a c
b a
m n
m o
n m
vorrei interrogare per i record che hanno "controparti" solo, cioè voglio ottenere a b
solo se c'è b a
nella tabella, ma i vuoi saltare i "collegamenti posteriori" (che è b a
qui). Per riassumere mi piacerebbe ottenere il seguente risultato
A B
------ ------
a b
m n
questa query SQL non funziona in quanto nel caso b a
viene gestito il a b
viene rimosso dal mio set di risultati.
SELECT DISTINCT x1.A, x1.B
FROM TEST x1, TEST x2
WHERE x1.A = x2.B AND x1.B = x2.A -- all records /w counterparts only
AND x1.A NOT IN (SELECT B from TEST where B = x1.A) -- skip the "back links"
la seconda parte della clausola WHERE non funziona come desiderato.
avete qualche suggerimento? qualsiasi aiuto con questo sarebbe molto apprezzato.
riguarda Peter
P.S. sto usando il derby db.
'b a' è un collegamento a ritroso di' a b'. ma anche 'a b' è un collegamento posteriore di' b a'. come vuoi scegliere quale tenere e quale saltare? – fthiella
Ma come sapere quali sono le risposte corrette (ordine)? Perché non un b e n m OR b a e n m? – Justin