Php 要使用MySQL组将两行合并为一行吗

Php 要使用MySQL组将两行合并为一行吗,php,mysql,codeigniter,Php,Mysql,Codeigniter,我想使用group\u concatmysql查询将两行合并为一行 $query = $this->db->select('trt.day, group_concat(trt.open_time, trt.close_time)') ->from('tbl_restaurant_timing as trt') ->where('trt.restaurant_id', $

我想使用
group\u 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表中的结果如下所示

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
        )

)


所以请检查我哪里错了。谢谢

请找到下面提到的解决方案,操作有点冗长,但我认为这将对您有所帮助

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