0

可能与 重复:

为多个表设置外键

或者

has_one 具有多个可能的外键列

我的sql 数据库中有一个表(MainTable ),它有 5 个字段。其中一个字段( FID)是同一数据库中其他 5 个表的外键。另一个字段(TypeID)包含一个 ID,它显示键在FID中属于那 5 个表中的哪个表。例如,如果 MainTable中的一条记录的FID =1000 和TypeID =1,则表示 1000 是第一个表中的主键。

现在我想将这些表加入到一个新表中,所以我创建了一个视图并在这 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
4

1 回答 1

0

CHill在此网址中回答了我的问题。

于 2013-06-02T07:18:01.907 回答