Подтвердить что ты не робот

Объединение двух таблиц на основе отношений, определенных в третьей таблице

У меня есть две таблицы Activity и Action. Для активности может быть выполнено одно или несколько действий. И отношения между Activity и Action приведены в третьей таблице Action Activity.

Как получить результирующий набор, который сообщает мне, какое действие применимо для каждого вида деятельности с помощью оператора sql? Здесь структура таблицы

Таблица действий -ActivityId (PK), ActivityText

Таблица действий - ActionId (PK), ActionText

ActivityAction -ActivityActionId (PK), ActivityID, ActionID

Мне нужна результирующая таблица в формате

Действие, применимое действие

(столбец активности должен показывать ActivityText, а применимое действие - ActionText)

Не могли бы вы направить меня?

Спасибо.

4b9b3361

Ответ 1

Это должно сделать трюк

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

В основном то, что мы имеем здесь, - это много-много отношений между Activity и Action, которое разрешается двумя отношениями один-ко-многим, используя таблицу соединений, называемую ActivityAction.

Чтобы вернуть требуемые данные, мы присоединяем ActivityAction к каждой из таблиц, используя соответствующие столбцы PK и FK, а затем выбирая столбцы строк в 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;

Ответ 3

SELECT ActivityText AS Activity, ActionText AS ApplicableAction
  FROM Activity 
  JOIN ActivityAction on Activity.ActivityId = ActivityAction.ActivityID
  JOIN Action on Action.ActionId = ActivityAction.ActionID

У вас есть идентификаторы в таблице действий, и когда вы присоединяетесь к таблице ActivityAction по ключу ActivityId, вы можете присоединиться к таблице действий