如何在mysql中从两个表构建json文件

n6lpvg4x  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(322)

我有两个表通过两列相互关联,我需要从表2中获取数据,以便在json文件中完成数组。
表1

id | time | ruta |  destino  |
------------------------------
1  | 1hr  | M17  |  Town     |
2  | 24m  | M11  |  Town     |

表2

id | ref  | ruta |  destino  |
------------------------------
1  | A01  | M17  |  Town     |
2  | A08  | M17  |  Town     |
3  | A09  | M17  |  Town     |
4  | A11  | M17  |  Town     |
5  | A41  | M11  |  Town     |
6  | A15  | M11  |  Town     |

我需要从表2中选择 ref 列,与 ruta 同样的 destino ,在json文件中按以下顺序显示: "ref":"A01, A08, A09, A11" ```
[{
"id":"1",
"ruta":"M17",
"destino":"Town",
"ref":"A01, A08, A09, A11",
},{
"id":"2",
"ruta":"M11",
"destino":"Town",
"ref":"A41, A15",
},

我的问题是 `$query = mysqli_query($con, "SELECT * FROM table1");` 但我不知道像我一样,我在php的noob,thnks
vxf3dgd4

vxf3dgd41#

如果您需要来自这两个表的结果,您可以使用join和groupconcat以及groupby

"SELECT t1.id, t1.ruta, t1.destino, group_concat(t2.ref)  as ref
FROM table1 t1
INNER JOIN table2 t2 on t1.ruta = t2.ruta and t1.destino = t2.destino 
GROUP BY t1.id, t1.ruta, t1.destino "
sz81bmfz

sz81bmfz2#

考虑以下几点:

<?php

/*

DROP TABLE IF EXISTS t1;

CREATE TABLE t1
( id SERIAL PRIMARY KEY
, ruta CHAR(3) NOT NULL
);

INSERT INTO t1 VALUES
(1,'M17'),
(2,'M11');

DROP TABLE IF EXISTS t2;

CREATE TABLE t2
(id SERIAL PRIMARY KEY
,ref CHAR(3) NOT NULL
,ruta CHAR(3) NOT NULL
);

INSERT INTO t2 VALUES
(1,'A01','M17'),
(2,'A08','M17'),
(3,'A09','M17'),
(4,'A11','M17'),
(5,'A41','M11'),
(6,'A15','M11');

 SELECT t1.*
      , t2.ref
   FROM t1
   JOIN t2
     ON t2.ruta = t1.ruta
  ORDER
     BY t1.id
      , t2.id;
+----+------+-----+
| id | ruta | ref |
+----+------+-----+
|  1 | M17  | A01 |
|  1 | M17  | A08 |
|  1 | M17  | A09 |
|  1 | M17  | A11 |
|  2 | M11  | A41 |
|  2 | M11  | A15 |
+----+------+-----+

* /

require('path/to/connection/stateme.nts');

$query = "
 SELECT t1.id
      , t1.ruta
      , t2.ref
   FROM t1
   JOIN t2
     ON t2.ruta = t1.ruta
  ORDER
     BY t1.id
      , t2.id;
";

$result = mysqli_query($conn,$query);

$array = array();

while($row = mysqli_fetch_assoc($result)){
$array[] = $row;
}

$new_array = array();

foreach($array as $row){

   $new_array[$row['id']]['id'] = $row['ruta'];
   $new_array[$row['id']]['ruta'][] = $row['ref'];

}

$json = json_encode($new_array);

echo($json);

/*

Outputs: {"1":{"id":"M17","ruta":["A01","A08","A09","A11"]},"2":{"id":"M11","ruta":["A41","A15"]}}

or something like that

* /

?>

相关问题