可能重复:
Setting a foreign key to more than one table
OR
我的sql数据库中有一个表( MainTable ),其中有5个字段。其中一个字段( FID )是同一个其他5个表的外键其他字段( TypeID )包含一个ID,表明 FID 中的键属于该5个表中的哪个表。例如,如果 FID对于 MainTable 中的记录, = 1000且 TypeID = 1,这意味着1000是表1中的主键。
现在我想将这些表连接到一个新表,所以我创建了一个视图,并在这5个表和 MainTable 之间使用了LEFT OUTER JOIN命令:
Select * From
(Select * From
(Select * From
(Select * From
(Select * From MainTable LEFT OUTER JOIN Table1 ON MainTable.FID=Table1.ID AND MainTable.TypeID=1)AS Temp1
LEFT OUTER JOIN Table2 ON Temp1.FID=Table2.ID AND Temp1.TypeID=2)AS Temp2
LEFT OUTER JOIN Table3 ON Temp2.FID=Table3.ID AND Temp2.TypeID=3)AS Temp3
LEFT OUTER JOIN Table4 ON Temp3.FID=Table4.ID AND Temp3.TypeID=4)AS Temp4
LEFT OUTER JOIN Table5 ON Temp4.FID=Table5.ID AND Temp4.TypeID=5
1)上述查询是否是此目标的最佳查询?
2)有没有办法在特殊列中合并结果表的某些列?我的意思是如果结果是这样的:
field1 field2 field3 field4
-------------------------------------------
value1 NULL NULL NULL
NULL value2 NULL NULL
NULL NULL value3 NULL
NULL NULL NULL value4
将其转换为以下内容:
new_field
------------
value1
value2
value3
value4