9amI从以前的帖子中查询得到帮助,但我有一个新问题。 忍受我在我的解释....Mysql左连接,只有在字段is_active = 1时覆盖行
设置,2表:cal_events
其中包含一个日历的动态事件和有一个更新对他们一天的循环事件。另外,持有重复事件的cal_events_recurring
。 下面的查询是一个虚拟数据的例子,它将被PHP传递。 我以12月15日为基础,因此请返回当天的所有活动。 重要的部分是,只有当循环事件没有匹配的动态副本时才会返回循环事件。如果cal_events
,is_overwrite
= 1和它的overwrite_id
=(上午9点00分cal_events_recurring
事件的唯一ID,则只返回动态表格行 这意味着,“嗨,我是每天发生在9: 00AM(例子),但看,在12月15日9:00的周期性活动已更新的基础上有我的唯一的ID的动态表格,天=其overwrite_id
所以返回的那一个。”
select * from(
select
ifnull(ce.time, cer.time) as time,
ifnull(ce.title, cer.title) as title,
ce.is_overwrite
from cal_events_recurring cer
left join cal_events ce on ce.overwrite_id = cer.id
where cer.is_daily = 1
or cer.day_index = 6
or cer.day_num = 15
union
select time as time, title, is_overwrite
from cal_events where date = '2012-12-15'
and is_active = 1 and is_overwrite = 0) as e order by time asc
这数据是正确的,问题是is_active
字段。 我将再次从上午9点开始。我创建了一个动态事件,为第16个上午9:00,它将覆盖重复事件十六号如果我稍后决定要恢复到常规循环事件,则将匹配动态事件的is_active
字段设置为0。问题是动态事件仍然返回。如果我添加and ce.is_active = 0
该事件仍然返回。我如何编写它,以便它的动态副本不活动时仍能返回循环事件?
您需要的任何其他信息请告诉我!
编辑* 输出:
time title
08:00:00 recurring everyday 8am
09:00:00 dynamic 9am update
(9am should be the recurring event because the dynamic is_active = 0)
您的预期输出如何? – bonCodigo
我添加了一些输出,你可以看到动态事件被拉动,即使它是is_active字段= 0。它应该拉动循环事件。 – Naterade
尝试一个'内部连接'和(可能)'联合不同'。 – 2012-12-20 19:33:30