繁体   English   中英

如何有条件地加入不同的表

[英]How to Join Conditionally to Different Tables

我正在尝试使用 tableau server 的数据,并且正在尝试将tasks表与datasources表和workbooks表连接起来。 tasks表有两个重要字段:

  • Obj_id
  • Obj_type

如果Obj_type = "Datasource"我会加入datasources.id = tasks.obj_id 如果Obj_type = "Workbook" ,我会加入workbook.id = tasks.obj_id

我尝试了这样的事情,但我无法让它工作,在我的结果中没有检索空值的情况下编写这个的正确方法是什么。

select * from datasources d
left join workbooks w on d.parent_workbook_id = w.id
left join tasks t on (if t.obj_type = "Datasource" then d.id else w.id end) = t.obj_id

示例预期 output:基本上,任务字段将始终被填充,因为如果数据源驻留在工作簿中,则任务表已经知道来自 obj_id 并将加入到工作簿 ID。 如果数据源在服务器上单独发布,则任务表将连接到数据源表。 所以总会有一场比赛。

d.姓名 w.姓名 t.obj_type 其他任务领域
样本数据0 Null 数据源 其他任务值
样本数据1 wkbk1 工作簿 其他任务值

我想你想要这样的东西:

select *
from tasks t left join
     datasources d 
     on t.obj_id = d.id and
        t.obj_type = 'Datasource' left join
     workbooks w
     on t.obj_id = w.id and
        t.obj_type = 'Workbook';

这是根据你的描述。 您的代码还有其他列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM