[英]tricky sql query using CI active record
我必须写这个查询,我想我需要一些帮助。 我正在使用Mysql的CodeIgniter(最新版本)。
我有这个小表“事件”与下面的结构:
而我想要做的是为每个venue_id
选择2个事件。
查询的结果如下:
Venue_id number 1 : event1, event 2
venue_id number 2 : event 5, event 6
换句话说,只是要清楚。 我需要为每个俱乐部选择2个赛事。
我正在尝试这样的事情:
SELECT * FROM (`events`) GROUP BY `venue_id` LIMIT 2
但我需要分组并限制为venue_id
有没有办法只通过SQL查询来做到这一点,还是我应该指望php来解决它?
例如,我有点困惑,因为表中没有活动属性,但它存在于您的查询中。
如果是任何2个事件
SELECT e1.venue_id, MIN(e2.name), MAX(e2.name)
FROM events e1
JOIN events e2
ON e1.venue_id = e2.venue_id
GROUP BY e1.venue_id
如果您只想要事件id,那么使用group_concat()
和substring_index()
:
select e.venue_id, substring_index(group_concat(e.id), ',', 2)
from events e
group by e.venue_id;
如果你想要两个场地的完整记录,我会采取这种方法:
select e.*
from events e join
(select venue_id, min(id) as minid, max(id) as maxid
from events
group by venue_id
) v
on e.venue_id = v.venue_id and
(e.id = minid or e.id = maxid);
编辑:
以下是了解特定场地的“n”事件的一种方法:
select e.*
from events e
where n >= (select count(*)
from events e2
where e2.venue_id = e.venue_id and
e2.id <= e.id
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.