2010-01-05 6 views
28

Ich habe zwei Tabellen Aktivität und Aktion. Eine oder mehrere Aktionen können für eine Aktivität ausgeführt werden. Und die Beziehungen zwischen Aktivität und Aktion werden in einer dritten Tabelle namens Activity Action angegeben.Verknüpfen Sie zwei Tabellen basierend auf der in der dritten Tabelle definierten Beziehung

Wie erhalte ich eine Ergebnismenge, die mir sagt, welche Aktion für jede Aktivität mit einer SQL-Anweisung anwendbar ist? Hier ist die Tabellenstruktur

Activity Table -ActivityId (PK), ActivityText

Aktion Tabelle - ActionId (PK), Actiontext

Activity -ActivityActionId (PK), ActivityID, ActionID

Ich möchte eine resultierende Tabelle im Format

Aktivität, anwendbare Aktion

(die Spalte Aktivität sollte zeigen ActivityText und anwendbare Maßnahmen sollten Actiontext zeigen)

könnten Sie mich bitte führen?

Vielen Dank.

+0

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

Antwort

41

auf JOINS in Datenbanken tun nachlesen Dies sollte den 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 

Sie sollten. Hier ist ein guter Ausgangspunkt:

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

Im Grunde, was wir hier haben, ist ein vieles zu viel Beziehung zwischen Aktivität und Aktion, die von zwei Eins-zu-viele-Beziehungen aufgelöst wird mit den einer Tabelle Activity genannt beitreten.

die erforderlichen Daten, um zurück zu bekommen, sind wir zu jedem der Tabellen der entsprechenden PK und FK Spalten und anschließend die Auswahl der String-Spalten in der 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 

Verbindungsactivity Sie haben IDs in der Tabelle Aktion und wenn Sie der Tabelle ActivityAction auf dem ActivityId-Schlüssel beitreten, können Sie der Aktivitätstabelle

Verwandte Themen