Чергуйте синтаксис для об'єднання декількох окремих рядків
Попередження: Ця публікація зробить вас голодними.
Подано:
Мені здалося, що я хочу вибрати кілька окремих рядків - замість групи - і об'єднатись у певне поле.
Скажімо, у вас є таблиця ідентифікаторів продуктів та їх назв та цін:
+------------+--------------------+-------+
| 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: Вибачте, якщо у вас немає входу -виходу поблизу ...