2011-03-13 119 views
3

也許我有一個不好的設計,但我目前正在嘗試 得到一個小型商店的訂購系統和運行。因爲它是 禮品訂單可以讓發件人和收件人顯示訂單的來往地點。
因此,我們有表選擇兩個參考表

Person 
personid 
name 
address 

Order 
Sender_personid 
Receiver_personid 
etc... 

我無法創建一個SQL語句的順序來選擇兩個人的名字和地址。如果這可以做任何指針會很好。如果沒有任何設計指針同樣令人讚歎的話。

回答

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 

在桌子上剛剛加入的兩倍。

+0

這工作很好,謝謝.. – BastanteCaro 2011-03-13 17:49:32

2

基本上你只是做同樣的事情,就好像你只想得到1個人(比如只有接收者),但是這次你加入了這個表格兩次。表別名可以幫助理解

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 
+0

爲什麼不顯式連接語法? – 2011-03-13 17:41:12

+2

如果您更改爲JOIN(自1992年以來推薦的SQL語法),我會加註。 – gbn 2011-03-13 17:41:16

+1

@Martin - 也就是說,它只是ANSI-89。但我同意,我一般不會投票贊成,只是ANSI-92。 – 2011-03-13 17:42:11