2012-07-03 59 views
0

说我得到了这个SQL模式。从具有不同列的多个表中选择

表工作:

id,title, type, is_enabled 

表JobFileCopy:

job_id,from_path,to_path 

表JobFileDelete:

job_id, file_path 

表JobStartProcess:

job_id, file_path, arguments, working_directory 

还有许多其他表的列数不同,它们都获得了外键job_id,它链接到表Job中的id。

我的问题:
这是正确的做法吗?我没有要求在任何时候删除任何东西。我将要求主要选择和插入。

其次,从单个数据库命中的所有不同表中获取具有相关详细信息的作业列表的最佳方法是什么?例如,我想选择具有详细信息的前20个作业,它们的详细信息可以在任何表中(取决于表Job中的列类型),这些信息直到运行时才会知道。

+0

“20强”是什么意思?你想用什么样的方法来排序? –

+0

前20只是一个例子。 Job表中会有更多的列,例如when_added,when_started,user_id等等。假设我根据这些列进行过滤,并从表Job中获取排名前20(或任何其他数量)的行,这根本没有问题。主要问题是如何获取存储在其他表中的作业详细信息? –

+0

为什么简单的加入选择或视图不足以满足您的需求!? –

回答

0
select (case when type = 'type1' then (select field from table1) else (select field from table2) end) as a from table; 

它可能是一个解决方案吗?

相关问题