php - 是否有可以完全以这种方式编码为 JSON 的 MySQL 查询?

标签 php mysql sql json

我有 2 个表,例如

                    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 列到关联的 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));
              ?>

这可能吗?

最佳答案

恕我直言,你真的不需要在 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

关于php - 是否有可以完全以这种方式编码为 JSON 的 MySQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32955587/

相关文章:

php - 在 PHP 中生成一个 Action 的发生总和

javascript - 使用 Google Analytics 检查重定向何时触发

php - ElasticSearch geo_distance过滤器未返回任何匹配

mysql - 将多边形插入mysql返回null

mysql - 我将如何在 SSIS/SQL 中编写这个 IF THEN ELSE 查询?

mysql - MySQL 中的高效子查询

mysql - 哪个是最有效的 SELECT 方法,为什么?

php - Yii 1.14 通知未定义偏移 : 0 in CUrlManager. php

php - MySQL 双阶

php - 编辑记录列表中选定的记录