Альтернативный синтаксис для объединения нескольких отдельных строк
ВНИМАНИЕ: этот пост сделает вас голодным.
Данный:
Я обнаружил, что хочу выбрать несколько отдельных строк вместо группы - и объединить в определенном поле.
Допустим, у вас есть таблица идентификаторов продуктов, их названий и цен:
+------------+--------------------+-------+
| product_id | name | price |
+------------+--------------------+-------+
| 13 | Double Double | 5 |
| 14 | Neapolitan Shake | 2 |
| 15 | Animal Style Fries | 3 |
| 16 | Root Beer | 2 |
| 17 | Lame T-Shirt | 15 |
+------------+--------------------+-------+
Тогда у вас есть какой-нибудь необычный аякс, который перечисляет этих щенков как флажки.
Ваш голодный бегемотик выбирает 13, 15, 16
. Сегодня для нее нет десерта ...
Найти:
Способ суммировать заказ вашего пользователя в одну строку, с чистым mysql.
Решение:
Используйте GROUP_CONCAT
с в IN
статье :
mysql> SELECT GROUP_CONCAT(name SEPARATOR ' + ') AS order_summary FROM product WHERE product_id IN (13, 15, 16);
Какие выводы:
+------------------------------------------------+
| order_summary |
+------------------------------------------------+
| Double Double + Animal Style Fries + Root Beer |
+------------------------------------------------+
Бонусное решение:
Если вы тоже хотите узнать общую стоимость, введите SUM()
:
mysql> SELECT GROUP_CONCAT(name SEPARATOR ' + ') AS order_summary, SUM(price) AS total FROM product WHERE product_id IN (13, 15, 16);
+------------------------------------------------+-------+
| order_summary | total |
+------------------------------------------------+-------+
| Double Double + Animal Style Fries + Root Beer | 10 |
+------------------------------------------------+-------+
PS: Извиняюсь, если у вас нет In-N-Out поблизости ...