簡體   English   中英

使用CI活動記錄的棘手的SQL查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM