我有三张桌子
第一张表(日)只保存数值.

uid,title
1, Mon
2, Tue
3, Wed
etc,etc

第二个表(查找)使用第一个表
uid,day_id,date,status,tech_id
1, 1,2012-01-01, 1,700
2, 2, 2012-01-02, 0,700
etc,etc

第三个表(模板)使用第一个表
uid,day_id,status,tech_id
1, 1, 1,700
2, 2, 0,700
3, 3, 0,700

实际上,每个表都包含更多显示的信息,但这些数据暂时不相关。
我试图做的是在一个sql函数中执行所有步骤,而不是依赖代码。如果那天没有条目,我试图使sql函数使用模板表而不是查找表
在psudocode中:
column 1 = * from days
column 2 = status from(if (template != null, use template)elseif(lookup != null, use lookup)else(null))
where tech_id=700

这在mysql中有可能吗?如果是,怎么做?我一直在尝试使用内部/左(外部)连接和子查询,但到目前为止没有效果:(

最佳答案

我想您需要使用coalesce函数:

SELECT d.*, COALESCE(SELECT status FROM lookup WHERE day_id = d.id, SELECT status FROM template WHERE day_id = d.id) as status
FROM day AS d
WHERE etc, etc

09-20 23:32