2016-08-03 3 views
0

у меня есть базы данных SQL Server, которая имеет 2 таблицыТаблицы сшиты без общих полей

Client Таблица

Name Employment Race 
Ronald 867   452 
Arnold 845   123 

Таблица поиска

lookup_id Detail 
867   Unemployed 
845   Part time employed 
452   White 
123   Black 

Числовые данные указывают на первичный ключ таблицы LookUp, называемый lookup_id. Соответствующий каждому lookup_id (867 856 и т. Д.) Является фактическим описанием занятости или гонки в тексте - Безработный, Белый и т. Д. Дополнительные поля Клиента следуют тем же ссылкам.

Однако поле lookup_id само по себе не существует в таблице Client. Мне кажется, что эти две таблицы связаны без ссылки на ПК, FK. Это возможно? Передача ключевой записи непосредственно в поле для объединения таблиц? Как мне объединить эти таблицы?

+1

А? Мне кажется, что пропавшая колонна прямо там ... называется Занятость. –

+0

Отредактировано: Несколько полей Клиента имеют числовые ссылки на идентификатор поиска – AS91

+0

Я думаю, что проблема здесь в том, что иногда люди зацикливаются на объединениях и думают, что для работы в команде должен быть внешний ключ. К счастью, это не так. –

ответ

1

Вы можете сделать это с помощью такого запроса.

новый запрос:

SELECT Name, L1.Detail AS Employment, L2.Detail as Race 
FROM Client C LEFT OUTER JOIN Lookup L1 
    ON C.Employment=L1.lookup_id 
LEFT OUTER JOIN Lookup L2 
    ON C.Race=L2.lookup_id 

старый запрос:

SELECT Name, Detail 
FROM Client C LEFT OUTER JOIN Lookup L 
ON C.Employment=L.lookup_id 

FK не нужно иметь такое же имя, как ПК в таблице FK, как здесь Работа и гонки столбцы внешней значение ключа для Lookup.

Также вы должны иметь необязательное отношение FK PK между таблицами. Это обычная практика в хранилище данных.

Смежные вопросы