Sieht aus wie Sie einen Rückblick auf benötigen, wie mit mehreren Beziehungen zwischen der Arbeit dieselben zwei Tabellen.
Ihr Geschenk Tisch hat eine Beziehung, die beschreibt, die das Geschenk gab - ich nenne es hier Geber; und eine Beziehung, die beschrieb, wer das Geschenk erhielt - ich nenne es hier Empfänger. Beide Beziehungen von Geschenk sind viele-zu-eins gegenüber dem Benutzertisch.
Sie einfach den gleichen Tisch zweimal teilnehmen und aus dieser Tabelle eine gute Korrelation Namen geben - Geber und Empfänger in meinem Beispiel - im Code zu zeigen, was du für sie verwenden.
Wie so:
WITH
gift(fromid,toid) AS (
SELECT 1,2
UNION ALL SELECT 2,6
UNION ALL SELECT 3,2
UNION ALL SELECT 5,3
)
,
users(userid,username) AS (
SELECT 1,'A'
UNION ALL SELECT 2,'B'
UNION ALL SELECT 3,'C'
UNION ALL SELECT 4,'D'
UNION ALL SELECT 5,'E'
UNION ALL SELECT 6,'F'
)
SELECT
giver.username as fromUser
, receiver.username as toUser
FROM gift
JOIN users AS giver
ON gift.fromid=giver.userid
JOIN users AS receiver
ON gift.toid =receiver.userid
ORDER BY 1,2
;
fromUser|toUser
A |B
B |F
C |B
E |C