涉及两个表:
第一个包含以下格式的表格(表格:stimuli_schedule)
id left_side right_side start_datetime
1 LS1 LS2 2013-05-14 12:00:00
2 LS2 LS1 2013-05-15 11:44:00
数据是指引入left_side right_side项目的日期时间。对于2013-05-14 12:00:00至2013-05-15 11:44:00,第一个计划记录处于活动状态。
第二个包括活动记录(表exp8):
id bee_id date_time choice landing_duration
1 Green12 2013-05-14 15:35:31 right 5
我需要找出两件事:(1)活动时在左侧和右侧显示的内容,以及(2)实际选择的内容。
这就是我所拥有的不能产生我需要的东西:
select *
from exp8
where exists (
select left_side
from stimuli_schedule
where exp8.date_time < stimuli_schedule.start_datetime
order by stimuli_schedule.start_datetime asc
limit 1)
提前致谢!
答案 0 :(得分:0)
这个怎么样?
SELECT e.*, ss2.left_side, ss2.right_side, ss2.start_datetime
FROM exp8 e
LEFT JOIN stimuli_schedule ss ON ss.start_datetime <= e.date_time
LEFT JOIN stimuli_schedule ss2 ON ss2.start_datetime <= e.date_time
GROUP BY e.id, ss2.id
HAVING ss2.start_datetime = MAX(ss.start_datetime) OR ss2.start_datetime IS NULL;
我们必须加入stimuli_schedule两次,一次获得正确的日期,然后再次获得匹配的完整行。
sqlfiddle在这里:http://sqlfiddle.com/#!2/271b0a/4