2011-09-17 15 views
16

Sto provando a scrivere una query semplice in sqlite con un self join. Voglio tutte le coppie di ID dei prodotti che hanno lo stesso costo, ma voglio coppie uniche (ad esempio non elenco due volte la stessa coppia anche in ordine diverso). Ecco quello che ho:Seleziona coppie univoche in join automatico

SELECT b1.Id, b2.Id 
FROM Basic AS b1 
LEFT JOIN Basic AS b2 
ON b1.cost = b2.cost 
WHERE b1.Id != b2.Id 
AND b1.Cost = 5; 

Così ho ottenere qualcosa di simile

23 | 101 
23 | 205 
24 | 103 
101 | 23 <-- Duplicate! 

Ho provato diverse combinazioni di DISTINCT e GROUP BY, ma ho ancora ottenere coppie dupicate:

I 've roba provato come

SELECT DISTINCT bp1.Id, bp2.Id ...

& ... = 5 GROUP BY bp1.Id, bp2.Id;

Come posso eliminare le coppie duplicate? Qualche idea?

Apprezzerò il vostro aiuto!

risposta

36

Change !=-< nella vostra clausola WHERE per assicurare che l'ID più basso viene sempre prima:

WHERE b1.Id < b2.Id 
+0

Questo non funziona se ci sono più di 1 set di ID che soddisfano i criteri. –

Problemi correlati