PHP 删除第二个记录组名 [英] PHP Remove the Second Record Group Name

查看:50
本文介绍了PHP 删除第二个记录组名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

任何人都知道如何将记录与同一组分组,但下一行的组名在 PHP/MySQL 中为空,例如:

anyone know how to grouping a record with same group but the next row the group name is blank with PHP/MySQL, for example :

记录在数据库表上:

| id | group_title | item     | qty | price
| 1  | G-01        | Mouse    |  1  |   $5
| 2  | G-01        | Keyboard |  1  |   $12
| 3  | G-01        | Keyboard |  1  |   $12
| 4  | G-01        | Cable    |  1  |   $1
| 5  | G-02        | Headset  |  1  |   $20

预期结果:

| Group | Item Name | Qty | Price/qty | Price Total/item | Price Total/group
| G-01  | Mouse     |  1  | $5        | $5               | $30
|       | Keyboard  |  2  | $12       | $24              | 
|       | Cable     |  1  | $1        | $1               | 
| G-02  | Headset   |  1  | $20       | $20              | $20

我已经尝试了很多天,但仍然没有解决.提前致谢.

I have tried to do it for many days, but still not solved. Thank in advance.

推荐答案

你可以用一个简单的 IF 和一个 uservar 来做到这一点:

You can do it with a simple IF and a uservar like this query:

SELECT 
    IF(g.gname = @myg, '', @myg:= gname) AS gname,
    g.mytext
FROM grouptab g
CROSS JOIN ( SELECT   @myg:='') AS init
ORDER BY g.gname;

示例

MariaDB [test]> select * from grouptab;
+----+-------+---------+
| id | gname | mytext  |
+----+-------+---------+
|  1 | G01   | Name 1  |
|  2 | G01   | Name 2  |
|  3 | G02   | Name 88 |
|  4 | G02   | Name 99 |
|  5 | G01   | Name 4  |
+----+-------+---------+
5 rows in set (0.000 sec)

MariaDB [test]> SELECT
    ->     IF(g.gname = @myg, '', @myg:= gname) AS gname,
    ->     g.mytext
    -> FROM grouptab g
    -> CROSS JOIN ( SELECT   @myg:='') AS init
    -> ORDER BY g.gname;
+-------+---------+
| gname | mytext  |
+-------+---------+
| G01   | Name 1  |
|       | Name 2  |
|       | Name 4  |
| G02   | Name 88 |
|       | Name 99 |
+-------+---------+
5 rows in set (0.000 sec)

MariaDB [test]>

这篇关于PHP 删除第二个记录组名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆