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