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