简体   繁体   English

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

[英]Database : Fetch two fields from same column on every array result

+----+--------------+-------------+
| 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  |
+----+--------------+-------------+

Above is my travel_manifest table, I want to fetch a list of those who have booked to travel and include their respective previous travel dates. 上面是我的travel_manifest表,我想获取已预订旅行的人员列表,并包括他们之前的旅行日期。 I don't know how to include their respective previous travel dates in my query. 我不知道如何在查询中包括他们以前的旅行日期。

Below is my query, 以下是我的查询,

$currentDate = '2018-05-14';

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

I'm looking for query result that looks like, eg for passenger1 我正在寻找看起来像例如passenger1的查询结果

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

Try this: 尝试这个:

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

It will return something like this: 它将返回如下内容:

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

In PHP you can then get an array of travel dates (assuming you fetch each row's data into the $row variable) with 在PHP中,您可以使用以下命令获取行进日期数组(假设您将每一行的数据提取到$row变量中)

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

Note: I'm assuming the travel_date column is of DATETIME type. 注意:我假设travel_date列为DATETIME类型。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM