Alternative Syntax zur Verkettung mehrere, einzelne Reihen
WARNUNG: Dieser Beitrag wird Sie hungrig machen.
Gegeben:
Ich hatte das Bedürfnis mehrere, einzelne Zeilen auswählen -anstelle einer Gruppe- und verketten Sie auf einem bestimmten Feld.
Nehmen wir an, Sie haben eine Tabelle mit Produkt-IDs und deren Namen und Preisen:
+------------+--------------------+-------+
| 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 |
+------------+--------------------+-------+
Dann haben Sie einige schicke Ajax, die diese Welpen als Checkboxen auflisten.
Ihr hungrig-hippo-Benutzer wählt 13, 15, 16
. Heute gibt es keinen Nachtisch für sie...
Finden:
Eine Möglichkeit, die Bestellung eines Benutzers in einer Zeile zusammenzufassen, mit reinem mysql.
Lösung:
Utilice GROUP_CONCAT
mit dem die IN
Klausel :
mysql> SELECT GROUP_CONCAT(name SEPARATOR ' + ') AS order_summary FROM product WHERE product_id IN (13, 15, 16);
Welche Ausgaben:
+------------------------------------------------+
| order_summary |
+------------------------------------------------+
| Double Double + Animal Style Fries + Root Beer |
+------------------------------------------------+
Bonuslösung:
Wenn Sie auch den Gesamtpreis wissen wollen, fügen Sie Folgendes hinzu 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 |
+------------------------------------------------+-------+
10 Stimmen
Ich habe gerade eine kleine Demo zur Verwendung von group_concat geschrieben, die für Sie nützlich sein könnte: giombetti.com/2013/06/06/mysql-group_concat
0 Stimmen
Dies könnte Ihnen helfen w3resource.com/mysql/aggregate-functions-and-grouping/
0 Stimmen
Sie können xpath verwenden, um Zeilen in Spalten zu drehen