2016-08-03 21 views
0

我有具有2個表表接合而不共用字段

SQL Server數據庫

客戶表

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字段本身不存在於客戶端表中。在我看來,這兩張表沒有PK,FK參考。這可能嗎?將密鑰條目直接傳遞給字段以連接表?我如何一起查詢這些表格?

+1

咦?在我看來,缺失的專欄就在那裏......名爲「就業」。 –

+0

編輯:多個客戶端字段有查找ID的數字引用 – 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表具有相同的名稱,PK,喜歡這裏的就業和種族欄目是國外鍵值爲Lookup

此外,你應該但不一定有表之間定義的FK PK關係。這是數據倉庫中的常見做法。

相關問題