如何查询表以获得一行需要两个连接到两个单独的ID?

时间:2012-05-04 16:15:12

标签: join oracle11g

Oracle 11g

PERSON表包含卖家和买家ID。如何将买方和卖方纳入单一结果集?我可以得到结果列出买方或卖方,但不能同时列出。

Person
=================
 PersonID First   Last
  1      Joe      Camel
  2      Ronald   McFly
  3      Barbara  Wawa

 SalesDetail
 =========================
 TransID   Amount  SellerID CustomerID
 98         500     1        2
 99         700     3        1

Desired Result
===========================================
SellerID    SellerLast  BuyerID BuyerLast  Amount
1           Camel       2       McFly      500
3           Wawa        1       Camel      700

2 个答案:

答案 0 :(得分:1)

只需加入Person表两次

SELECT sd.sellerID,
       seller.last sellerLast,
       sd.buyerID,
       buyer.last buyerLast,
       sd.amount
  FROM salesDetail sd
       JOIN person seller ON (sd.sellerID = seller.personID)
       JOIN person buyer  ON (sd.buyerID  = buyer.personID)

如果买方或卖方可能未知,您可能需要外部联接。

答案 1 :(得分:1)

试试这个

select seller.sellerid, 
       seller.last,
       buyer.buyerid,
       buyer.last, 
       amount
from
person buyer
inner join salesdetail on buyer.personid = salesdetail.cutomerid
inner join person seller on salesdetail.sellerid = seller.personid

目前无法测试自己