I have a MySQL table like the following:
| BurgerExtra ID | Burger ExtraName | BurgerExtraPrice |
|---|---|---|
| 1 | Mayo | 1 |
| 2 | Burger Sauce | 1 |
| 3 | Ketchup | 1 |
| 4 | Hot Chilli Sauce | 1 |
| 5 | Pickles | 1 |
| 6 | Musard | 1 |
| 7 | Lettuce | 1 |
| 8 | Tomatoes | 1 |
| 9 | Grilled Onions | 1 |
| 10 | Onions | 1 |
| 11 | Jalapeños | 1 |
| 12 | American Cheese | 1 |
| 13 | Red Relish | 1 |
| 14 | Chipotle | 1 |
| 15 | Bacon | 4 |
| 16 | Egg | 2 |
| 17 | Cheese Sauce | 3 |
But I need to show the data in the following format:
Mayo - Burger Sauce - Ketchup - Hot Chilli Sauce - Pickles - Mustard - Lettuce Tomatoes - Grilled Onions - Onions - Jalapeños - American Cheese - Red Relish Chipotle Mayo 1 Bacon 4 - Egg 2 - Cheese Sauce 3
I have tried
SELECT BurgerExtraName, BurgerExtraPrice FROM `BurgerExtras` ORDER BY BurgerExtraPrice;
and
SELECT BurgerExtraName, BurgerExtraPrice FROM `BurgerExtras` GROUP BY BurgerExtraPrice;
but neither seem to on the right path to do what I am trying to achieve. I should mention that I am working in PHP but I want to find out if it possible to do this in MySQL first.
CodePudding user response:
You can use group_concat:
select group_concat(
concat(BurgerExtraName,
case when BurgerExtraPrice > 1 then concat(' ', BurgerExtraPrice) else '' end)
order by BurgerExtraID
separator ' - '
)
from BurgerExtras
