选择两个对同一表的引用

时间:2011-03-13 17:34:31

标签: sql sql-server

也许我的设计不好,但我目前正在努力 获得一个小型商店的订购系统启动和运行。原样 礼品订单可以让发件人和收件人显示订单的来往地点 所以我们有桌子

Person
personid
name 
address

Order
Sender_personid
Receiver_personid
etc...

我无法创建一个sql语句来选择订单中两个人的姓名和地址。如果可以做到这一点,任何指针都会很棒。如果没有任何设计指针同样apreciated。

2 个答案:

答案 0 :(得分:7)

我想你想要这样的东西:

SELECT
    SP.*,
    RP,*,
    O.*
FROM Order O
JOIN Person SP ON SP.PersonID = O.Sender_PersonID
JOIN Person RP ON RP.PersonID = O.Receiver_PersonID

两次加入桌面。

答案 1 :(得分:2)

基本上你只是做同样的事情,就好像你只想要一个人(比如只有接收者),但这次你加入桌子两次。表别名有助于理解

SELECT receiver.name, sender.name
FROM order o, person as receiver, person as sender
where o.sender_personid = receiver.personid 
and o.sender_personid = sender.personid