database:从每个数组结果的同一列中获取两个字段

fivyi3re  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(377)
+----+--------------+-------------+
| id | pax          | travel_date |
+----+-------+--------------------+
| 1  | passenger1   | 2018-06-14  |
| 2  | passenger2   | 2018-06-14  |
| 3  | passenger3   | 2018-03-24  |
| 4  | passenger1   | 2018-03-16  |
| 5  | passenger1   | 2018-02-05  |
| 6  | passenger3   | 2018-01-11  |
+----+--------------+-------------+

上面是我的旅行舱单表,我想取一份已经预订旅行的人的名单,包括他们各自以前的旅行日期。我不知道如何在我的查询中包括他们各自以前的旅行日期。
下面是我的问题,

$currentDate = '2018-05-14';

SELECT pax,travel_date FROM travel_manifest WHERE travel_date > 2018-05-14;

我正在查找类似的查询结果,例如passenger1

Array
(
    [id] => 1
    [name] => passenger1
    [travel_date] => 2018-05-14  
    [travel_date] => 2018-05-16 //previous travel date
)
wn9m85ua

wn9m85ua1#

试试这个:

SELECT id, pax AS name, GROUP_CONCAT(DATE_FORMAT(travel_date, '%Y-%m-%d')) AS travel_dates 
FROM travel_manifest 
WHERE travel_date > '2018-03-15'
GROUP BY name

它将返回如下内容:

id  name        travel_dates
1   passenger1  2018-06-14,2018-03-16
2   passenger2  2018-06-14
3   passenger3  2018-03-24

在php中,您可以获得一个旅行日期数组(假设您将每一行的数据提取到 $row 变量)带

$travel_dates = explode(',', $row['travel_dates']);

注意:我假设旅行日期列是 DATETIME 类型。

相关问题