2010-01-05 72 views
28

Tôi có hai bảng Hoạt động và Hành động. Một hoặc nhiều hành động có thể được thực hiện cho một hoạt động. Và các mối quan hệ giữa Hoạt động và Hành động được đưa ra trong bảng thứ ba có tên là Hoạt động Hoạt động.Tham gia hai bảng dựa trên mối quan hệ được xác định trong bảng thứ ba

Làm cách nào để truy xuất tập hợp kết quả cho tôi biết hành động nào có thể áp dụng cho từng hoạt động sử dụng câu lệnh sql? Dưới đây là các cấu trúc bảng

Hoạt động Bảng -ActivityId (PK), ActivityText

Action Bảng - ActionId (PK), ActionText

ActivityAction -ActivityActionId (PK), ActivityID, ActionID

Tôi muốn có một bảng kết quả theo định dạng

Hoạt động, hành động áp dụng

(cột Hoạt động sẽ hiển thị ActivityText và hành động áp dụng sẽ hiển thị ActionText)

bạn có thể vui lòng hướng dẫn cho tôi?

Cảm ơn bạn.

+0

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

Trả lời

41

này nên làm các trick

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 

Bạn nên đọc lên trên tham gia trong cơ sở dữ liệu. Đây là một điểm khởi đầu tốt:

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

Về cơ bản những gì chúng tôi có ở đây là một nhiều mối quan hệ giữa hoạt động và hành động đó đã được giải quyết bởi hai mối quan hệ một-nhiều bằng cách sử dụng một bảng tham gia gọi ActivityAction.

Để có được dữ liệu cần thiết lại, chúng tôi đang tham gia ActivityAction cho mỗi một trong các bảng bằng cách sử dụng PK thích hợp và cột FK và sau đó chọn cột chuỗi trong 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 

Bạn có ID trong bảng Hành động và khi bạn tham gia vào ActivityAction trên khóa ActivityId thì bạn có thể tham gia bảng hoạt động

Các vấn đề liên quan