我有一个SQL Server数据库,它有2个表
客户表
Name Employment Race
Ronald 867 452
Arnold 845 123
查找表
lookup_id Detail
867 Unemployed
845 Part time employed
452 White
123 Black
数字条目指向名为lookup_id的LookUp表的主键。对应每个lookup_id(867,856等)是文本中的实际就业或种族描述 - 失业,白色等。更多客户字段遵循相同的参考。
但是,在Client表中不存在lookup_id字段本身。在我看来,两个表没有PK,FK参考链接。这可能吗?将密钥条目直接传递到字段以连接表?我如何一起查询这些表?
答案 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相同,例如,Employment和Race列是Lookup
的外键值。
此外,您应该但不一定在表之间定义FK PK关系。这是数据仓库中的常见做法。