Мой проект связан с блогом, в котором люди публикуют статьи и получают еженедельные вознаграждения в зависимости от охвата постов за последнюю неделю, рекламы и т. Д. *
для определенной ситуации. Мне нужен запрос, который возвращает несколько строк из трех таблиц, проблема в том, что когда я использую JOIN, есть несколько дубликатов, и я не могу найти решение для их удаления.
Таблицы структурированы следующим образом:
Таблица 1: Пользователи
ID | Name | Age
1 | Mark | 16
2 | Michael | 21
Таблица 2: Сообщения
userID | postID | Title
1 | A1 | Inflation : A simplified Approach
1 | A2 | The "un-winnable" game of politics
2 | A3 | What is Bourgeoisie ?
2 | A4 | The radical views of Carl Marx
2 | A5 | Anna Karenina, or the greatest novel in history
Таблица 3: Доход
userID | weekRevenue
1 | $0.2
1 | $0.14
1 | $0.91
1 | $1.72
2 | $0.99
Все, что мне нужно, - это запрос, который возвращает следующее:
ID | postID | weekRevenue
1 | A1 | $0.2
1 | A2 | $0.14
1 | 'Null' | $0.91
1 | 'Null' | $1.72
2 | A3 | $0.99
2 | A4 | 'Null'
2 | A5 | 'Null'
, то есть: возвращает значения из всех таблиц без дублирования какого-либо значения и без привязки какого-либо поля из две таблицы, но к полю ID
в таблице Users
это вообще возможно? Если нет, то каков подход к достижению чего-то близкого к тому, что я прошу?
Мой подход (который, очевидно, потерпел неудачу) заключался в использовании JOIN
, а вот мой запрос
Select A.ID,B.postID,C.weekRevenue
from Users A
left join Posts B
on A.ID=B.userID
left join Revenue C
on A.ID=C.userID;
, и возвращение было:
ID | postID | weekRevenue
1 | A1 | $0.2
1 | A1 | $0.14
1 | A1 | $0.91
1 | A1 | $1.72
1 | A2 | $0.2
1 | A2 | $0.14
1 | A2 | $0.91
1 | A2 | $1.72
2 | A3 | $0.99
2 | A4 | $0.99
2 | A5 | $0.99
Я также пытался Right JOIN
, inner
и их комбинации без существенных изменений в возвращаемой таблице.
любое предложение будет полезным, большое спасибо заранее.