Sql 从具有不同列的多个表中选择

Sql 从具有不同列的多个表中选择,sql,inheritance,database-design,Sql,Inheritance,Database Design,假设我得到了这个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,该id链接到表job中的id 我的问题是: 这是正确的方法吗?我不需

假设我得到了这个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,该id链接到表job中的id

我的问题是: 这是正确的方法吗?我不需要在任何时候删除任何内容。我将需要选择和插入大部分

其次,在一个数据库中从所有不同的表中获取包含相关细节的作业列表的最佳方法是什么?e、 我想选择前20个有详细信息的作业,它们的详细信息可以在任何表中,这取决于表作业中的列类型,直到运行时我才知道

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

这能为您提供解决方案吗?

您所说的“前20名”是什么意思?你想用什么标准来对工作进行排序?前20名只是一个例子。作业表将有更多的列,例如添加时、启动时、用户id等。假设我根据这些列进行筛选,并从表作业中获取前20行或任何其他数字行,这根本没有问题。主要问题是如何获取存储在其他表中的作业详细信息?为什么简单的联接选择或视图不足以满足您的要求!?如果我事先知道我要拿什么,我可以加入。正如我所说的,我不知道哪一张表有这份工作的细节。我从job表中获取有关该作业的基本信息,其余详细信息根据作业类型从其他表中获取。