Я работаю над запросом mySQL для личного проекта. В настоящее время конечная цель состоит в том, чтобы запрос возвращал следующий json для каждого элемента:
{
"id": 1,
"designName": "Slender Man",
"designNotes": "Rewrite the lapel component",
"quantity": 3,
"colors": [
{
"id": 4,
"colorName": "black",
"colorSwatch": "rgb (0,0,0)",
"brandName": "caron simply soft",
"yarnWeightId": {
"weightNumber": 4,
"weightName": "medium/worst weight"
}
},{
"id": 5,
"colorName": "Off White",
"colorSwatch": "rgb (255,255,255)",
"brandName": "caron simply soft",
"yarnWeightId": {
"weightNumber": 4,
"weightName": "medium/worst weight"
}
}
]
}
Моя последняя попытка:
SELECT
d.id,
d.designName,
d.designNotes,
d.quantity,
d.isDeleted,
GROUP_CONCAT(
JSON_OBJECT(
c.colorName,
c.colorSwatch,
c.brandName,
yw.weightNumber,
yw.weightName
)
) AS colorsUsed
FROM designs AS d
INNER JOIN design_colors AS dc
ON dc.designId = d.id
INNER JOIN colors AS c
ON dc.colorId = c.id
INNER JOIN yarnweights AS yw
ON c.yarnWeightId = yw.id
GROUP BY d.id
;
, что приводит к внутренней ошибке сервера,Тестирование с помощью более простого запроса проходит нормально, поэтому я сузил его до самого запроса, являющегося проблемой.
Приведенный ниже запрос сбил меня с толку:
SELECT
d.id,
d.designName,
d.designNotes,
d.quantity,
d.isDeleted,
GROUP_CONCAT(
DISTINCT c.id
GROUP BY c.id
) AS colorsUsed
FROM designs AS d
INNER JOIN design_colors AS dc
ON dc.designId = d.id
INNER JOIN colors AS c
ON dc.colorId = c.id
INNER JOIN yarnweights AS yw
ON c.yarnWeightId = yw.id
GROUP BY
d.id
Он вернул объекты, подобные этому:
{
"id": 3,
"designName": "Slenderman",
"designNotes": null,
"quantity": 0,
"isDeleted": 0,
"colorsUsed": "4,5"
}
Но пока я получаю идентификаторы всех colorsUsed
Iне получайте их в массиве, не говоря уже о массиве объектов, которые мне там нужны. Я чувствую, что GROUP_CONCAT не является правильным решением для этого, или, по крайней мере, я не правильно его использую, но это то, что возникает, когда я пытаюсь найти решение. Точка в правильном направлении, чтобы продолжать искать, была бы также полезна.
Моя база данных имеет следующую структуру: [диаграмма базы данных] [https://i.stack.imgur.com/lxsvv.png]