mysql — PHP удаляет имя второй группы записей

кто-нибудь знает, как сгруппировать запись с той же группой, но в следующей строке имя группы пустое с PHP / MySQL, например:

Запись в таблицу базы данных:

| 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

Я пытался сделать это в течение многих дней, но все еще не решен.
Заранее спасибо.

0

Решение

Вы можете сделать это с помощью простого ЕСЛИ и uservar нравится этот запрос:

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]>
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector