select a.prijmeni ,a.pritel,b.prijmeni from (SELECT os1.prijmeni,os1.id_osoby,p.prijmeni pritel,p.id_osoby as pr from osoby os1 join vztahy on(os1.id_osoby=id_osoby1) natural join typy_vztahu join osoby p on ( p.id_osoby=id_osoby2) where nazev="přátelé") a join (SELECT os1.prijmeni,os1.id_osoby,p.prijmeni pritel,p.id_osoby as pr from osoby os1 join vztahy on(os1.id_osoby=id_osoby1) natural join typy_vztahu join osoby p on ( p.id_osoby=id_osoby2) where nazev="přátelé")b on (a.pr=b.pr) where a.id_osoby >b.id_osoby union distinct select a.prijmeni ,a.pritel,b.prijmeni from (SELECT os1.prijmeni,os1.id_osoby,p.prijmeni pritel,p.id_osoby as pr from osoby os1 join vztahy on(os1.id_osoby=id_osoby2) natural join typy_vztahu join osoby p on (p.id_osoby=id_osoby1) where nazev="přátelé") a join (SELECT os1.prijmeni,os1.id_osoby,p.prijmeni pritel,p.id_osoby as pr from osoby os1 join vztahy on(os1.id_osoby=id_osoby2) natural join typy_vztahu join osoby p on ( p.id_osoby=id_osoby1) where nazev="přátelé")b on (a.pr=b.pr) where a.id_osoby >b.id_osoby SELECT osp.prijmeni spol, o1.prijmeni prit1, o2.prijmeni prit2 FROM ( SELECT v1.sp, p1, p2, vz1, vz2 FROM (SELECT id_vztahy vz1, id_osoby1 sp, id_osoby2 p1 FROM vztahy NATURAL JOIN typy_vztahu WHERE nazev ='přátelé') v1 JOIN (SELECT id_vztahy vz2, id_osoby1 sp, id_osoby2 p2 FROM vztahy NATURAL JOIN typy_vztahu WHERE nazev ='přátelé') v2 ON ((v1.sp=v2.sp) AND vz1!=vz2 ) UNION SELECT v1.sp, p1, p2, vz1, vz2 FROM (SELECT id_vztahy vz1, id_osoby1 sp, id_osoby2 p1 FROM vztahy NATURAL JOIN typy_vztahu WHERE nazev ='přátelé') v1 JOIN (SELECT id_vztahy vz2, id_osoby2 sp, id_osoby1 p2 FROM vztahy NATURAL JOIN typy_vztahu WHERE nazev ='přátelé') v2 ON ((v1.sp=v2.sp) AND vz1!=vz2) UNION SELECT v1.sp, p1, p2, vz1, vz2 FROM (SELECT id_vztahy vz1, id_osoby2 sp, id_osoby1 p1 FROM vztahy NATURAL JOIN typy_vztahu WHERE nazev ='přátelé') v1 JOIN (SELECT id_vztahy vz2, id_osoby1 sp, id_osoby2 p2 FROM vztahy NATURAL JOIN typy_vztahu WHERE nazev ='přátelé') v2 ON ((v1.sp=v2.sp) AND vz1!=vz2) UNION SELECT v1.sp, p1, p2, vz1, vz2 FROM (SELECT id_vztahy vz1, id_osoby2 sp, id_osoby1 p1 FROM vztahy NATURAL JOIN typy_vztahu WHERE nazev ='přátelé') v1 JOIN (SELECT id_vztahy vz2, id_osoby2 sp, id_osoby1 p2 FROM vztahy NATURAL JOIN typy_vztahu WHERE nazev ='přátelé') v2 ON ((v1.sp=v2.sp) AND vz1!=vz2) ) aaa LEFT JOIN (SELECT id_vztahy vz3, id_osoby1 o1, id_osoby2 o2 FROM vztahy NATURAL JOIN typy_vztahu WHERE nazev ='přátelé') v3 ON ((aaa.p1=v3.o1 and aaa.p2=v3.o2) OR (aaa.p1=v3.o2 and aaa.p2=v3.o1)) JOIN osoby osp ON (osp.id_osoby=sp) JOIN osoby o1 ON (o1.id_osoby=p1) JOIN osoby o2 ON (o2.id_osoby=p2) WHERE vz3 IS NULL AND p1>p2 ORDER BY spol