Database table articles holds parent articles and articles variants. Variant articles have empty NAME fields, their PARENTID is related to the parents id. Not every article has variants.
parent articles: ID, NAME
variant articles: ID, PARENTID, VARIANT
How can ι get a JSON like this? Only articles with child articles
{
"ID": "dfe17b",
"NAME": "this is a very good movie",
"variants": [
{
"ID": "6bcb7",
"VARIANT": "DVD",
},
{
"ID": "75a9b",
"VARIANT": "Blu-ray",
},
{
"ID": "fe3b3",
"VARIANT": "VHS",
}
]
},
{
"ID": "dfe156",
"NAME": "this is a pretty nice movie",
"variants": [
{
"ID": "5j4h7",
"VARIANT": "online",
},
{
"ID": "95c9s",
"VARIANT": "Blu-ray",
}
]
}
SQL:
SELECT o.ID, o.PARENTID, IFNULL(oa.TITLE, o.TITLE) AS TITLE, o.VARNAME, o.VARSELECT
FROM articles o
LEFT JOIN articles oa
ON oa.ID = o.PARENTID
WHERE o.VARNAME IS NOT NULL
ORDER BY TITLE ASC
gives
{
"ID": "dfe17b",
"NAME": "this is a very good movie",
"VARIANT": "",
...
},
{
"ID": "6bcb7",
"NAME": "this is a very good movie",
"VARIANT": "DVD",
...
},
{
"ID": "75a9b",
"NAME": "this is a very good movie",
"VARIANT": "Blu-ray",
...
},
{
"ID": "fe3b3",
"NAME": "this is a very good movie",
"VARIANT": "VHS",
...
},
{
"ID": "dfe156",
"NAME": "this is a pretty nice movie",
"VARIANT": "",
...
},
{
"ID": "5j4h7",
"NAME": "this is a pretty nice movie",
"VARIANT": "online",
...
},
{
"ID": "95c9s",
"NAME": "this is a pretty nice movie",
"VARIANT": "Blu-ray",
...
}