Помогите с запросом

Vehovr
Дата: 10.01.2016 14:26:59
Здравствуйте, есть таблица, встречи двух игроков А и Б, нужно найти в таблице их общего противника и вывести встречи игрока А с этим общим противником и игрока Б с общим противником.
ID1ID2
12
14
42


Пока в голову приходит только что-то примерно такое, но вылезает ошибка, подскажите пожалуйста, как это реализовать, хотя бы как найти список общих противников
SELECT ID1 FROM ((SELECT distinct  ID1 FROM tbl WHERE ID1=1 or ID2=1)
union(SELECT distinct ID2 FROM tbl WHERE ID1=1 or ID2=1)) as q1 
join ((SELECT distinct ID1 FROM tbl WHERE ID1=2 or ID2=2)
union(SELECT distinct ID2 FROM tbl WHERE ID1=2 or ID2=2)) as q2 on q1.ID1=q2.ID1
;
guest_rusimport
Дата: 10.01.2016 17:35:51
Vehovr,
как то так :)
Vehovr
Дата: 10.01.2016 17:59:25
guest_rusimport, спасибо)
-Практикант-
Дата: 11.01.2016 05:36:17
Vehovr, для игроков А и Б, имеющих ID соответственно IDA и IDB, общих соперников в таблице Tab можно найти одним запросом
PARAMETERS IDA Long, IDB Long;
SELECT IIf(ID1 In (IDA,IDB),ID2,ID1) AS IDRiv
FROM Tab
WHERE ID1 In (IDA,IDB) Xor ID2 In (IDA,IDB)
GROUP BY IIf(ID1 In (IDA,IDB),ID2,ID1)
HAVING Sum(IIf(ID1 In (IDA,IDB),ID1,ID2)=IDA)<0 And Sum(IIf(ID1 In (IDA,IDB),ID1,ID2)=IDB)<0

или такой модификацией предыдущего запроса
PARAMETERS IDA Long, IDB Long;
SELECT IDRiv FROM
(SELECT IIf(ID1 In (IDA, IDB), ID1, ID2) As IDAB, IIf(ID1 In (IDA, IDB), ID2, ID1) As IDRiv
FROM Tab
WHERE ID1 In (IDA, IDB) Xor ID2 In (IDA, IDB)) As Q
GROUP BY IDRiv
HAVING Sum(IDAB=IDA)<0 And Sum(IDAB=IDB)<0