База данных: выборка двух полей из одного столбца в каждом результате массива - PullRequest
0 голосов
/ 14 мая 2018
+----+--------------+-------------+
| 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  |
+----+--------------+-------------+

Над моей таблицей travel_manifest я хочу получить список тех, кто забронировал поездку, и указать соответствующие даты предыдущих поездок. Я не знаю, как включить их соответствующие предыдущие даты поездки в мой запрос.

Ниже мой запрос,

$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
)

1 Ответ

0 голосов
/ 14 мая 2018

Попробуйте это:

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']);

Примечание. Я предполагаю, что столбец travel_date имеет тип DATETIME.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...