簡體   English   中英

使用GROUP_CONCAT問題的JSON VIEW

[英]JSON VIEW using GROUP_CONCAT question

嗨,DBA和整體聰明的家伙。 我有一個問題問你。

當數據返回時,我們使用MySQL VIEWs將數據格式化為JSON(作為BLOB),這很方便(盡管在性能上不是特別好,但是我們已經知道這一點)。

但是,我現在似乎無法使特定的查詢正常工作(當每行應包含具有多個JOIN值的已創建JSON對象時,每一行都將包含NULL)。

這是一般的想法:

SELECT CONCAT(
  "{",
     "\"some_list\":[", GROUP_CONCAT( DISTINCT t1.id ), "],",
     "\"other_list\":[", GROUP_CONCAT( DISTINCT t2.id ), "],",
  "}"
) cool_json

FROM table_name tn

INNER JOIN ( some_table st ) ON st.some_id = tn.id

LEFT JOIN ( another_table at, another_one ao, used_multiple_times t1  )
 ON st.id = at.some_id AND
    at.different_id = ao.different_id AND
    ao.different_id = t1.id

LEFT JOIN ( another_table2 at2, another_one2 ao2, used_multiple_times t2  )
 ON st.id = at2.some_id AND
    at2.different_id = ao2.different_id AND
    ao2.different_id = t2.id

GROUP BY tn.id ORDER BY tn.name

有人知道這里的問題嗎? 我是否缺少應分組的內容? 當我只做1個LEFT JOIN和GROUP_CONCAT時,它就工作了,但是現在有多個JOINs / GROUP_CONCATs,這很混亂。

當我從“ cool_json”字段中移動GROUP_CONCAT時,它們可以按預期工作,但是我希望將數據格式化為JSON,以便可以一步一步地將其解碼為服務器端或客戶端。

我已經測試了其中一些,找不到任何故障。

嘗試創建一個像

CREATE VIEW tn_view AS
SELECT  tn.id, tn.name, t1.id, t2.id

FROM table_name tn

INNER JOIN ( some_table st ) ON st.some_id = tn.id

LEFT JOIN ( another_table at, another_one ao, used_multiple_times t1  )
 ON st.id = at.some_id AND
    at.different_id = ao.different_id AND
    ao.different_id = t1.id

LEFT JOIN ( another_table2 at2, another_one2 ao2, used_multiple_times t2  )
 ON st.id = at2.some_id AND
    at2.different_id = ao2.different_id AND
    ao2.different_id = t2.id

然后

SELECT CONCAT(
  "{",
     "\"some_list\":[", GROUP_CONCAT( DISTINCT t1.id ), "],",
     "\"other_list\":[", GROUP_CONCAT( DISTINCT t2.id ), "],",
  "}"
) cool_json
FROM tn_view
GROUP BY id ORDER BY name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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