2015-10-05 63 views
2

我有2個表像是否有一個MySQL查詢,可以編碼成JSON恰好這種方式?

    work_assets 
    ----------------------------------------------------- 
    id |  asseturl | previmgurl  | carid 
    ----------------------------------------------------- 
    1 | "pic1.jpg" |  "pic2.jpg" | 1 
    2 | "pic3.jpg" |  "pic4.jpg" | 1 
    3 | "pic5.jpg" |  "pic6.jpg" | 2 
    . |  ...  |  ...  | . 
    . |  ...  |  ...  | . 


         cases 
    ----------------------------------------------------- 
    id |  ...  | carid |  ... 
    ----------------------------------------------------- 
    1 |  ...  |  1  |  ... 
    2 |  ...  |  2  |  ...   
    3 |  ...  |  69  |  ... 
    . |  ...  | ...  |  ... 
    . |  ...  | ...  |  ... 

,我的希望是,我可以執行一些類型的查詢Q的,可以讓我的JSON基本上是cases表從其carid一個一對多的關係colummn到相關聯的asseturlprevimgurl,像

[ 
{ id : 1, ..., assetinfo: [ { asseturl : "pic1.jpg", previmgurl: "pic2.jpg"}, { asseturl : "pic3.jpg", previmgurl: "pic4.jpg"} ], ... }, 
{ id : 2, ... }, 
{ id: 3, ... }, 
    . 
    . 
    . 
] 

設置:

var cases = <?php 
        $Q = ????; 
        echo json_encode($wpdb->get_results($Q)); 
       ?> 

這可能嗎?

+4

我對此表示懷疑。你將不得不查詢數據,循環這些結果並以你想要的格式建立一個數組。查詢將只拔出在2D(列行)數據,而不是3D或4D(與一個或多個列中的數據的另一陣列列的行)。理想情況下它可能會是兩個查詢,環在第一和注入所述第二與第一下一個子陣列。 –

+0

如果您正在使用某個具有ORM的框架(或者您可以將一個框架添加到您的項目中),則可以利用該框架來交付所需的結果集。如果沒有,那麼取決於你在json編碼之前獲取數據並安排它。 – JimL

+1

鑑於這個問題上有一個php標籤,我建議你編寫用該語言序列化數據的代碼。 –

回答

2

恕我直言,你真的,因爲它不是非常有效的,幾乎沒有任何意義不需要做MySQL的一面,JSON轉變。

但只是爲了表明它是可能的(在@bannmatt意見對面)這裏是我的方法:

http://sqlfiddle.com/#!9/6bffb/7

SELECT c.*, 
    CONCAT('assetinfo : [ ', 
    COALESCE(
     GROUP_CONCAT(CONCAT("{ asseturl: ", 
          wa.asseturl, 
          ', previmgurl: ', 
          wa.previmgurl," }") 
     ), 
    ''), 
    ' ]') 
FROM cases c 
LEFT JOIN work_assets wa 
ON c.carid = wa.carid 
GROUP BY c.id 
+0

不錯的想法:)關於這個的一個問題 - 當你在查詢結果中得到'assetinfo'字段時,這不會是一個大字符串,如果你調用''' json_encode'上的查詢結果? – bunnmatt

+0

@bunnmatt那要看是哪個WordPress功能'get_results'返回。你可以檢查wordpress的codex。 – Alex

0

不幸的是,我不認爲你能從你的數據庫中得到一個單一的SQL查詢,它將以你想要的方式串行化成JSON,因爲你描述的結構是多維的 - 即嵌套在另一個數組中的數組。

+0

你確定嗎? ;-) – Alex

相關問題