Возможно ли объединить 2 столбца в одной таблице в одну и ту же вторую таблицу? - PullRequest
0 голосов
/ 02 апреля 2020

Извините, если ответ прост, но я немного новичок в этом.

По сути, у меня есть две таблицы.

1) В этой таблице приведены подробности биографии людей c со следующими столбцами.

Имя | Фамилия | ДОБ - День | ДОБ - Месяц | Год выпуска

2) Эта таблица является справочной таблицей, называемой «кодовой книгой», используемой в качестве справочной информации, и имеет следующие столбцы

Ключ | Значение

В первой таблице и «DOB-день», и «DOB-месяц» ссылаются на «таблицу кодовой книги» (это потому, что эти два столбца на самом деле являются комбинированными полями в приложениях, поэтому значения, которые здесь хранится ссылка на таблицу кодовых книг)

Моя проблема заключается в том, что я пытаюсь выполнить запрос к базе данных - по сути, я хочу, чтобы результаты, отображаемые пользователю, отображали фактические значения для «DOB - Day» и Столбец «DOB - Месяц», а не идентификатор, который фактически хранится в первой таблице.

Я добавлю несколько простых данных в обе таблицы для контекста.

Таблица 1

Forename    Surname   DOB - Day     DOB - Month     DOB - Year
Sam         Smith     DOB_DAY_1     DOB_MONTH_6     1987
Tom         Nickles   DOB_DAY_13    DOB_MONTH_4     1974
Abigail     Peters    DOB_DAY_17    DOB_MONTH_10    2000
Marcus      Tompson   DOB_DAY_5     DOB_MONTH_11    2002
Rick        Ford                                    2000

Таблица 2

Key          Value
DOB_DAY_1    1
DOB_DAY_2    2
DOB_DAY_3    3
DOB_MONTH_1  January
DOB_MONTH_2  February
DOB_MONTH_3  March

У меня есть попытался использовать равное соединение в таблицах, чтобы "DOB - День" = "Ключ" и "DOB - Месяц" = "Ключ", однако у меня возникла проблема, когда, если DOB не известен для человека, которого они не ' t показано в результатах, потому что равные соединения дают нулевые значения со скидкой.

Что мне нужно во внешнем объединении, но редактор запросов Microsoft говорит, что у меня может быть только одно внешнее объединение, поэтому я могу ссылаться только на один из столбцов ...

Я явно не понимаю что-то критическое потому что два столбца в одной таблице должны иметь возможность ссылаться на одну и ту же вторую таблицу. Подзапросы решат эту проблему?

Любая помощь будет высоко цениться, и если бы вы могли ошарашить ее для меня, это было бы здорово, ха-ха.

1 Ответ

0 голосов
/ 02 апреля 2020

То, что вам нужно вместо равного соединения, - это левое соединение. Левое объединение B. Означает, что будет показано все из таблицы A, даже если в таблице B. значение поиска не найдено.

SELECT T.Forename,T.Surname,Day.Value as DOBDay,Month.Values as DOBMonth,T.[DOB - Year]
FROM Test as T
LEFT JOIN CodeBook as Day ON Day.Key=T.[DOB - Day]
LEFT JOIN CodeBook as Month ON Month.Key=T.[DOB - Month]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...