SQL: Как виртуально объединить две таблицы и дать ссылку на результат? - PullRequest
0 голосов
/ 11 июля 2019

Представьте себе три таблицы:

user:
- id
- name (string)

event:
- id
- description (string)
- points (int)

history:
- user_id
- event_id

Теперь представьте, что таблицы в настоящее время заполнены следующими данными:

user:
id: 1, name: foo
id: 2, name: bar
id: 3, name: beef

event:
id: 1, description: "walked 5 miles", points: +10
id: 2, description: "awake the whole night", points: +15
id: 3, description: "wasn't naughty", points: +20

history:
id: 1, user_id: 1, event_id: 1
id: 2, user_id: 1, event_id: 3
id: 3, user_id: 2, event_id: 1

Так что схема похожа на «сколькоочки есть у пользователя ".В настоящее время, например, пользователь 1 имеет в сумме 10 + 20 = 30 баллов, верно?


Я хотел бы добавить еще одну таблицу с вещами, которые пользователь может "купить" для своих баллов.

gift:
- id
- points (int)
- description (string)

, который заполнен, например,

gift:
id: 1, points: -30, description: "a bottle of beer"
id: 2, points: -5, description: "coffee"

Моя проблема:

В настоящее время я создаю новую запись в history когда пользователь получает очки.Но как бы вы вычли баллы, когда он покупал подарок?

Я думал о чем-то вроде комбинированной таблицы, которая включает события и записи подарков:

[USER]-----[HISTORY]-----[COMBINED]--+--[EVENTS]
                                     |
                                     +--[GIFTS]

Но я не могу присоединиться к нимпотому что мне нужна таблица gift где-то еще.

Я абсолютно не представляю, как это сделать в SQL, прошло много времени с тех пор, как я его изучил, и, к сожалению, с тех пор я его никогда не использовал.Я надеюсь, что кто-нибудь может указать мне правильное направление:)

Спасибо!

...