2016-06-01 242 views
1

只使用MySQL查詢有沒有辦法將JSON對象列表轉換並選擇到單個列中?選擇json對象數組

比如我有一個表event_time這基本上是一個子表event因此每個event有很多event_time(S)。我想要做的就是創建類似下面的查詢:

select e.*, (some select and conversion to a json array query) as 'event_times' 
from event e; 

我一直在試圖合併MySQL的JSON_OBJECTJSON_ARRAY,但它似乎並不支持這一點。

下面的查詢工作,但並沒有給我想要的結果(因爲LIMIT 1

select e.*, 
    (select json_object("id", et.id, "event_id", et.event_id, "start_time", et.start_time, "end_time", et.end_time) 
    from event_time et 
    where et.event_id = e.id 
    LIMIT 1) as 'event_times' 
from event e; 

將返回: enter image description here

如果有辦法的人的東西從結果此查詢

select json_object("id", id, "event_id", event_id, "start_time", start_time, "end_time", end_time) as 'event_time' from event_time; 

JSON_ARRAY我覺得會給我在找什麼。任何幫助將不勝感激。

+1

我回答了類似的問題,這前些天http://stackoverflow.com/questions/37470949/how-do-i-generate-nested-json-objects-using-mysql-native-json-函數/ 37474200#37474200 –

+0

感謝@BradBaskin,爲我所需要的工作。 – Tyler

回答

0

感謝@BradBaskin這已經在另一個問題上得到了回答。

https://stackoverflow.com/a/37474200/3071052

我把他的答案,修改了它稍微到我的需要。

select e.*, 
    (select CAST(
     CONCAT('[', 
      GROUP_CONCAT(
       JSON_OBJECT('id',et.id,'event_id',et.event_id, 
       'start_time', date_format(et.start_time, '%Y-%m-%d %H:%i'), 
       'end_time', date_format(et.end_time, '%Y-%m-%d %H:%i')) 
      ), 
     ']') 
    AS JSON) 
    from event_time et 
    where et.event_id = e.id 
    ) as event_times 
from event e;