Хорошо, так это мои три таблицы:SQL - Как связать две таблицы с третьей таблицы и получить все записи
ПОЛЬЗОВАТЕЛЕЙ
|--------+----------+----------|
| UserID | UserName | IsActive |
|--------+----------+----------|
| 10 | Mike | 1 |
| 11 | John | 1 |
| 12 | Beth | 1 |
|--------+----------+----------|
REPORT_DISTRIB (Связывание таблицы)
|-----------+--------+----------+---------------|
| DistribID | UserID | ReportID | DistribToUser |
|-----------+--------+----------+---------------|
| 1 | 10 | 50 | 1 |
| 2 | 12 | 52 | 0 |
| 3 | 14 | 54 | 1 |
|-----------+--------+----------+---------------|
ОТЧЕТ
|----------+------------+---------------|
| ReportID | ReportName | Distributable |
|----------+------------+---------------|
| 50 | FY2010 | 1 |
| 51 | FY2011 | 1 |
| 52 | FY2012 | 1 |
|----------+------------+---------------|
В проблеме, с которой я столкнулся, у меня есть 200 пользователей из таблицы USER, которые являются активными, и 10 отчетов из таблицы REPORT, которые могут быть распределены. Для каждого пользователя мне нужно, чтобы отобразить имя пользователя, название доклада, и должен ли этот доклад был распространен для пользователя, например, так:
|----------+------------+---------------|
| UserName | ReportName | DistribToUser |
|----------+------------+---------------|
| Mike | FY2010 | 1 |
| Beth | FY2012 | 0 |
|----------+------------+---------------|
То, что я пытаюсь достичь список результатов 2000 года (200 пользователей x 10 отчетов). Проблема заключается в том, что таблица ссылок REPORT_DISTRIB не имеет записи для каждого пользователя с каждым отчетом. Я все еще чувствую, что это должно быть возможно ... Я ошибаюсь в своих мыслях? Любая помощь приветствуется.
Это грубо, но это мой запрос до сих пор (возвращает 1790 результатов):
Так как я правильно понимаю, что вы хотите, чтобы вернуть 10 строк для каждых 200 пользователей, 1 строку для каждый отчет для каждого пользователя. В случае, если у этого пользователя есть запись связывания с этим отчетом, поставьте 1 в другом случае, положив 0? – Jordan