mysql - Multiple json from a database using php
Solution:
I suppose you could group your database rows and comma-delimit them so that they are flat, then unpack/explode them as you iterate.
SELECT errors.error_code,
errors.issue,
GROUP_CONCAT(DISTINCT errors.cause) AS causes,
GROUP_CONCAT(DISTINCT errors.solution) AS solutions,
GROUP_CONCAT(DISTINCT products.product) AS products
FROM errors
JOIN products
ON errors.issue = products.issue
AND errors.error_code = products.error_code
WHERE errors.error_code = 'A01'
GROUP BY errors.error_code,
errors.issue;
| error_code | issue | causes | solutions | products |
|---|---|---|---|---|
| A01 | issue1 | cause1.1,cause1.2,cause1.3 | solution1.1,solution1.2,solution1.3 | P1,P2 |
| A01 | issue2 | cause1.4 | solution1.4 | P4 |
Answer
Solution:
Query the data in the next form:
SELECT error_code, issue, cause, NULL solution, NULL product
FROM ERRORS
UNION ALL
SELECT error_code, issue, NULL, solution, NULL
FROM ERRORS
UNION ALL
SELECT id_error, issue, NULL, NULL, product
FROM PRODUCTS
ORDER BY error_code, issue, cause IS NULL, solution IS NULL
(see fiddle), then iterate this rowset in your PHP code.
PS. You cannot aggregate this data into needed JSON on MySQL due to key names duplication.
Source