select
AllGiveWish.WhichWay,
AllGiveWish.Item_ID,
p1.Name as MainPersonName,
p2.Name as OtherPersonName
from
(select
"Give" as WhichWay,
G.Item_ID,
G.Person_ID as MainPerson,
W.Person_ID as OtherPerson
from
GiveAways G
JOIN WishList W
on G.Item_ID = W.Item_ID
where
G.Person_ID = YourSinglePersonParm
UNION ALL
select
"Wish" as WhichWay,
W.Item_ID,
W.Person_ID as MainPerson,
G.Person_ID as OtherPerson
from
WishList W
JOIN GiveAways G
on W.Item_ID = G.Item_ID
where
W.Person_ID = YourSinglePersonParm) As AllGiveWish
join People P1
on AllGiveWish.MainPerson = P1.Person_ID
join People P2
on AllGiveWish.OtherPerson = P2.Person_ID
ありがとう!しかし、これは、ユーザーが望むアイテムを放棄しているすべての人々を返すようです。ユーザーが離れているアイテムを欲しがっている人だけでなく、 – LarsJK
あなたはそのsintaxを避けるべき理由をあなたの答えに加えることができますか?私の仕事では、これは読書のほうがはるかに優れていると考えています。これはパフォーマンスが変わらないことを私たちが知っています(少なくともOracleでは)。ありがとう。 –
@SérgioMichels - それは長い会話で、私はまだそれについてここに質問があると確信しています。私の '短い'(ish)答えは...(技術的)複数の内部/外部結合を実装する場合、外部結合表記はそれをあいまいにします。 (プレゼンテーション)複雑なANSI-92では、それが古い表記法であることを理解するのがずっと簡単です。これにより、保守やデバッグが容易になります。 '、'表記*はしばしばコンパクトですが、特に単純なクエリの場合はコンパクトです。しかし、最悪の場合のシナリオは、ANSI-92の最悪のシナリオよりもずっと悪いことがよくあります。 – MatBailie