У меня есть таблица mysql под названием «автомобили», где я храню: «бренд», «модель», «цвет». Я хотел бы получить данные как это:
[
{
brand: "audi",
cars: [
{
"model": "coupe",
"color": "red",
},
{
"model": "a3",
"color": "blue",
},
]
},
{
brand: "renault",
cars: [
{
"model": "modus",
"color": "white",
},
{
"model": "clio",
"color": "green",
},
]
},
...
]
Итак, я делаю первый запрос MySQL, в котором я группирую по марке, а затем повторяю результат, чтобы получить все машины для каждой марки:
const query = "SELECT brand FROM cars GROUP BY brand"
mysql.query(query, values, (err, result) => {
for (let i = 0; i < result.length; i++) {
const query2 = "SELECT model, color FROM cars WHERE brand = ?"
const values2 = [result[i].brand]
mysql.query(query2, values2, (err2, result2) => {
result[i].cars = result2
callback(result)
})
}
})
Код, который я показываю, работает, но я не думаю, что выполнение итерации для запроса MySQL - хорошая вещь.
Я провел много исследований, и я действительно не знаю, что делать.
Можно ли получить этот результат с помощью одного запроса MySQL? Или я должен получить все строки из таблицы "cars", а затем выполнить JS для форматирования данных? Или я должен продолжать использовать эту итерацию запроса MySQL?
Спасибо