2010-01-05 13 views
28

İki tablomuz var Aktivite ve Eylem. Bir etkinlik için bir veya daha fazla eylem gerçekleştirilebilir. Etkinlik ve Eylem arasındaki ilişkiler, Etkinlik Eylemi adlı üçüncü bir tabloda verilmektedir.Üçüncü tabloda tanımlanan ilişkiye göre iki tabloya katılın.

Bir sql ifadesi kullanarak her etkinlik için hangi eylemin uygulanabilir olduğunu bana bildiren bir sonuç kümesini nasıl alabilirim? İşte tablo yapısı var

Faaliyet Çizelgesi -ActivityId (PK), ActivityText

Eylem Tablo - ActionId (PK), ActionText

ActivityAction -ActivityActionId (PK), ActivityId, ActionID

Ben formatında bir çıkan tablo istiyorum

Aktivite, Uygulanabilir Eylem

sen bana yol misiniz (ActivityText ve Uygulanabilir Eylem ActionText göstermelidir göstermelidir Etkinlik sütunu)?

Teşekkür ederiz.

+0

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

cevap

41

Bu Nasıl veritabanlarında KATILDI kadar okumalısınız hile

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 

yapmalıdır. İşte iyi bir başlangıç ​​noktasıdır:

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

Temelde biz burada ne var bir ActivityAction denilen tablo katılmak kullanarak iki bire çok ilişkileri giderilip Aktivite ve Eylem arasında birçok ilişki bir sayıda olduğunu.

geri gerekli verileri almak için, Kimliklerin var Uygun FK ve FK sütunlar kullanılarak tablolardan her birine ActivityAction katılma ve ardından SEÇ

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 

dize sütunlar seçiyor Eylem tablosunda ve ActivityId anahtarında ActivityAction tablosuna katıldığınızda, etkinlik tablosuna katılabilirsiniz

İlgili konular