2011-04-14 61 views
0

有看起來像這樣的三個表:跨越連接表Select語句

PersonTable 
Person.ID 
Person.Name 

PersonTypeCompositeTable 
Person.ID 
PersonType.ID 

PersonTypeTable 
PersonType.ID 
PersonType.Category 

對於這個例子,說PersonTypeCompositeTable的值是:

1,A 
2,A 
3,B 

如何我寫的SELECT語句將會返回PersonType爲「A」的所有人?


UPDATE:(答案的工作版本發佈)

SELECT p.* 
FROM PersonTable p 
    INNER JOIN PersonTypeCompositeTable ptc 
    ON p.ID = ptc.ID 
    INNER JOIN PersonTypeTable pt 
    ON ptc.ID = pt.ID 
WHERE pt.Category = 'A' 
+1

我不認爲這是一個複合表。這只是一個加入表 – 2011-04-14 19:46:08

+0

+1 @Joe Philllips:你是對的,謝謝! http://en.wikipedia.org/wiki/Junction_table – blunders 2011-04-14 20:00:31

回答

3

您可以使用三個表之間joins

SELECT p.* 
FROM PersonTable p 
    INNER JOIN PersonTypeCompositeTable ptc 
    ON p.Person.ID = ptc.Person.ID 
    INNER JOIN PersonTypeTable pt 
    ON ptc.PersonType.ID = pt.PersonType.ID 
WHERE pt.PersonType.Category = 'A' 
+1

+1對於RTFM評論 – Wes 2011-04-14 19:44:33

+0

+1 @Wes:RTFM自己...... :-) ...只是在開玩笑,但真的,我已經知道JOINS永遠並且仍然沒有得到它們,很少使用它們 - 而Oded可以獲得超級簡單的代表點。此外,他最終更新了他的答案。 – blunders 2011-04-14 19:55:15

+0

+1 @Oded:打開門,我會在早上進入辦公室時選擇QA作爲答案 - 或發表評論。謝謝! – blunders 2011-04-14 19:59:24