2012-05-04 3 views
0

Oracle 11gComment interroger la table pour obtenir une ligne nécessitant deux jointures à deux ID distincts?

La table PERSON contient à la fois l'identifiant du vendeur et celui de l'acheteur. Comment puis-je amener l'acheteur et le vendeur dans un ensemble de résultats unique? Je peux obtenir des résultats pour lister l'acheteur ou le vendeur mais pas les deux.

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 

Répondre

1

Il suffit de se joindre à la table Person deux fois

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) 

Vous voudrez peut-être des jointures externes s'il est possible que l'acheteur ou le vendeur est inconnu.

1

essayer cette

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 

incapable de me tester au moment

Questions connexes