【问题标题】:Create json containing all titles from group by query result根据查询结果创建包含分组中所有标题的 json
【发布时间】:2015-10-13 01:50:15
【问题描述】:

我正在尝试做一些非常简单的事情,但无法让它发挥作用。我在这里看到了一些复杂的类似线程,但我无法解决这些问题。

我简化了我的问题,所以我只有一张两行的表。产品和标题。产品具有相似的名称,但标题没有,我想以 json 格式获取它,但我坚持要简单地获取所有标题。这是我的代码

$query = mysqli_query($con, "SELECT* FROM mylist GROUP BY products");
while($row = $query->fetch_array()){
echo $row['products'].' - '; 
echo $row['title'];
echo "<br>";

我得到的结果是这样的

prod1 - title 4
prod2 - title 2
prod3 - title 3

但我期待这个

prod1 - title 4, title 1
prod2 - title 2
prod3 - title 3

然后用json编码

更新: 所以我可以像这样得到 JSON

{"prod1":["title 4,title 1"],"prod2":["title 2"],"prod3":["title 3"]}

使用此代码

$request = <<< EOT
SELECT products, GROUP_CONCAT(title) AS title
FROM mylist
GROUP BY products
ORDER BY products ASC;
EOT;

$rows = $con->query($request)->fetchAll(PDO::FETCH_ASSOC);
$items= array();
foreach ($rows as $row){
    $days[$row['products']]= explode(",", $row['title']);
}
var_dump($items);
echo json_encode($items);

但我仍在寻找一些小的调整。我怎样才能得到这样的json

{
"prodlist": {
    "prod1": [
        {
            "title": "title5"
        },
        {
            "title": "title1"
        }
    ],
    "prod2": [
        {
            "title": "title5"
        }
    ]
  }
}

【问题讨论】:

  • 尝试使用 GROUP_CONCAT。
  • 是的,谢谢,但不确定是否是最好的方法,也不确定如何添加另一行 $query = mysqli_query($con, "SELECT products, GROUP_CONCAT(title)as title FROM mylist GROUP BY products ");

标签: php group-by group-concat


【解决方案1】:

你需要这样的GROUP_CONCAT

SELECT products, GROUP_CONCAT(title ORDER BY products ASC SEPARATOR ', ') AS prods 
FROM mylist  
GROUP BY products

这是完整的 SQL 小提琴:http://sqlfiddle.com/#!9/38681/7

【讨论】:

  • 是的,这可行,但仅限于两行,如何添加更多行,如价格、网址、描述等
  • SELECT products, GROUP_CONCAT(title,price,url ORDER BY products ASC SEPARATOR ', ') AS prods FROM mylist GROUP BY products
  • prod1 - title 46,title 13 prod2 - title 24 prod3 - title 35
  • 但期待是这样的
  • prod1 - title 4,6;title 1,3; prod2 - title 2,4; prod3 - title 3,5;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-15
  • 2021-11-08
  • 2013-07-24
  • 2016-03-19
  • 1970-01-01
相关资源
最近更新 更多