Я хочу объединить 2 строки как один с group_concat
запроса group_concat
mysql
$query = $this->db->select('trt.day, group_concat(trt.open_time, trt.close_time)') ->from('tbl_restaurant_timing as trt') ->where('trt.restaurant_id', $restaurant_id, FALSE) ->group_by('trt.day') ->get();
Я пробовал выше, но он дает некоторые другие результаты, как показано ниже
Array ( [0] => Array ( [day] => Fri [group_concat(trt.open_time, trt.close_time)] => 18:0023:00,10:0015:00 ) [1] => Array ( [day] => Mon [group_concat(trt.open_time, trt.close_time)] => 10:0015:00,18:0023:00 ) [2] => Array ( [day] => Sat [group_concat(trt.open_time, trt.close_time)] => 18:0023:00,10:0015:00 ) [3] => Array ( [day] => Sun [group_concat(trt.open_time, trt.close_time)] => 10:0015:00,18:0023:00 ) [4] => Array ( [day] => Thu [group_concat(trt.open_time, trt.close_time)] => 10:0015:00,18:0023:00 ) [5] => Array ( [day] => Tue [group_concat(trt.open_time, trt.close_time)] => 18:0023:00,10:0015:00 ) [6] => Array ( [day] => Wed [group_concat(trt.open_time, trt.close_time)] => 18:0023:00,10:0015:00 ) )
Здесь вы можете увидеть, что второй слот идет первым в некоторых строках, что неверно.
Это одна моя таблица, которую я хочу получить в php-таблице, например, ниже
Поэтому, пожалуйста, проверьте, где я ошибаюсь. спасибо
Ниже вы найдете ниже приведенные решения, немного продолжительную работу, но я думаю, что это поможет вам.
SELECT trt.id, trt.day, (SELECT CONCAT_WS('-',open_time, close_time) from tbl_restaurant_timing trt1 WHERE trt1.day = trt.day ORDER BY trt1.id ASC LIMIT 1) as first_slot, (SELECT CONCAT_WS('-',open_time, close_time) from tbl_restaurant_timing trt1 WHERE trt1.day = trt.day ORDER BY trt1.id DESC LIMIT 1) as second_slot FROM tbl_restaurant_timing trt WHERE trt.restaurant_id = 1 GROUP BY trt.day ORDER BY id;
Данные таблицы
+----+----------------+-----------+-----------+------------+ | id | restaurant_id | day | open_time | close_time | +----+----------------+-----------+-----------+------------+ | 1 | 1 | Monday | 10:00 | 15:00 | +----+----------------+-----------+-----------+------------+ | 2 | 1 | Monday | 18:00 | 23:50 | +----+----------------+-----------+-----------+------------+ | 3 | 1 | Tuesday | 09:00 | 15:00 | +----+----------------+-----------+-----------+------------+ | 4 | 1 | Tuesday | 18:00 | 23:00 | +----+----------------+-----------+-----------+------------+ | 6 | 1 | Wednesday | 10:00 | 15:00 | +----+----------------+-----------+-----------+------------+ | 7 | 1 | Wednesday | 18:00 | 23:00 | +----+----------------+-----------+-----------+------------+ | 8 | 1 | Thursday | 10:00 | 15:00 | +----+----------------+-----------+-----------+------------+ | 9 | 1 | Thursday | 18:00 | 23:00 | +----+----------------+-----------+-----------+------------+ | 13 | 1 | Friday | 10:00 | 15:00 | +----+----------------+-----------+-----------+------------+ | 14 | 1 | Friday | 18:00 | 23:00 | +----+----------------+-----------+-----------+------------+ | 15 | 1 | Saturday | 10:00 | 15:00 | +----+----------------+-----------+-----------+------------+ | 16 | 1 | Saturday | 18:00 | 23:00 | +----+----------------+-----------+-----------+------------+ | 17 | 1 | Sunday | 10:00 | 15:00 | +----+----------------+-----------+-----------+------------+ | 18 | 1 | Sunday | 18:00 | 23:00 | +----+----------------+-----------+-----------+------------+
результат
+----+-----------+-------------+-------------+ | id | day | first_slot | second_slot | +----+-----------+-------------+-------------+ | 1 | Monday | 10:00-15:00 | 18:00-23:50 | +----+-----------+-------------+-------------+ | 3 | Tuesday | 09:00-15:00 | 18:00-23:00 | +----+-----------+-------------+-------------+ | 6 | Wednesday | 10:00-15:00 | 18:00-23:00 | +----+-----------+-------------+-------------+ | 8 | Thursday | 10:00-15:00 | 18:00-23:00 | +----+-----------+-------------+-------------+ | 13 | Friday | 10:00-15:00 | 18:00-23:00 | +----+-----------+-------------+-------------+ | 15 | Saturday | 10:00-15:00 | 18:00-23:00 | +----+-----------+-------------+-------------+ | 17 | Sunday | 10:00-15:00 | 18:00-23:00 | +----+-----------+-------------+-------------+
Дайте мне знать, если это не сработает.