根据ER模型,有一个表Task
,它有8个子表。每个子表根据其类型具有不同的属性,例如,任务表将如下所示(真实的ER模型在任务表中具有更多属性)
Task_ID | Version | Title | Place | Reason | Description
其中一个子表看起来像这样
Task_ID | Version | Begin | End
另一个像这样
Task_ID | Version | Begin | Duration | Duration_unit
假设我们创建了一个带有Begin和End的新任务,我们执行2次插入,没问题。但是,如果我想从所有不同的任务类型中获取所有任务呢?例如,ID为1的任务,SELECT
语句将如何显示?我尝试过像这样的选择:
SELECT * FROM TASK,TASK_1,TASK_2,TASK_3,TASK_4,TASK_5,TASK6,TASK_7,TASK_8;
我测试了插入TASK
和TASK4
,但每当我尝试选择它时都没有显示任何内容,并且放置一个地方会导致ambiguos列错误。我想过制作一个大JOIN
,但我不知道这是否有效。我还想取出空值列
答案 0 :(得分:0)
不确定空值列的含义。但是,您可以包含WHERE
子句来减少结果集,以排除列中具有空值的行。
select t.*, ct.Begin, ct.End, ct2.Duration, ct2.Duration_unit
from task t
join childTask ct
on t.Task_ID=ct.Task_ID
join childTask2 ct2
on ct2.Task_ID=ct.Task_ID