Sintassi alternativa per concatenare più righe singole
ATTENZIONE: questo post ti farà venire fame.
Dato:
Mi sono ritrovato a voler selezionare più righe singole, invece di un gruppo, e concatenare un determinato campo.
Supponiamo che tu abbia una tabella di ID prodotto e i loro nomi e prezzi:
+------------+--------------------+-------+
| 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 |
+------------+--------------------+-------+
Quindi hai un po 'di fantasia ajax che elenca questi cuccioli come caselle di controllo.
Il tuo utente affamato di ippopotamo seleziona 13, 15, 16. Nessun dessert per lei oggi ...
Trova:
Un modo per riassumere l'ordine del tuo utente in una riga, con puro mysql.
Soluzione:
Utilizzare GROUP_CONCATcon la INclausola :
mysql> SELECT GROUP_CONCAT(name SEPARATOR ' + ') AS order_summary FROM product WHERE product_id IN (13, 15, 16);
Quali uscite:
+------------------------------------------------+
| order_summary |
+------------------------------------------------+
| Double Double + Animal Style Fries + Root Beer |
+------------------------------------------------+
Soluzione bonus:
Se vuoi anche il prezzo totale, aggiungi 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: mi scuso se non hai un In-N-Out nelle vicinanze ...