2010-01-05 94 views
28

我有兩個表Activity和Action。一項活動可以執行一項或多項行動。 Activity和Action之間的關係在第三個表中給出,稱爲Activity Action。根據第三個表中定義的關係加入兩個表

如何檢索一個結果集,告訴我哪些操作適用於每個使用sql語句的活動?這裏的表結構

活動表 -ActivityId(PK),ActivityText

動作表 - ActionId(PK),ActionText

ActivityAction -ActivityActionId(PK),ActivityID,ActionID

我想要一個格式結果表

活動,適用行動

(活動欄應該顯示ActivityText和適用的行動應該顯示ActionText)

請您指導我?

謝謝。

+0

http://en.wikipedia.org/wiki/Join_%28SQL%29 – 2010-01-05 20:48:58

回答

41

這應該做的伎倆

SELECT Activity.ActivityText as Activity, Action.ActionText as ApplicableAction 
FROM ActivityAction 
    INNER JOIN Activity 
     ON ActivityAction.ActivityId = Activity.ActivityId 
    INNER JOIN Action 
     ON ActivityAction.ActionId = Action.ActionId 

你應該在數據庫JOINS讀了。這裏是一個很好的起點:

http://en.wikipedia.org/wiki/Join_%28SQL%29

基本上我們這裏什麼是許多人的活動和行動之間的多對多關係由兩個使用一個連接表稱爲ActivityAction一個一對多的關係解決。

獲得所需要的數據的時候,我們使用的是合適的PK和FK列加入ActivityAction到表中的每一個,然後在SELECT

2
SELECT ActivityText, ActionText 
FROM Activity 
JOIN ActivityAction ON Activity.ActivityId = ActivityAction.ActivityId 
JOIN Action ON ActivityAction.ActionId = Action.ActionId 
WHERE Activity.ActivityId = 1; 
0
SELECT ActivityText AS Activity, ActionText AS ApplicableAction 
    FROM Activity 
    JOIN ActivityAction on Activity.ActivityId = ActivityAction.ActivityID 
    JOIN Action on Action.ActionId = ActivityAction.ActionID 

選擇字符串列你的ID在Action表中,當您將ActivityAction連接到ActivityId鍵時,則可以加入活動表

相關問題