SELECT
(SELECT RAW q
FROM default AS q
WHERE q._type = "question" AND q._id = d.question)[0].* ,
CASE WHEN ARRAY_LENGTH(childqs) > 0
THEN (SELECT RAW q FROM default AS q WHERE q._type = "question" AND q._id IN childqs)
ELSE MISSING
END AS children,
d.`order`
FROM default AS c
UNNEST c.data AS d
LET childqs = (ARRAY v.question FOR v WITHIN d.child WHEN v.question IS NOT MISSING END)
WHERE c._type = "dynform"
ORDER BY d.`order` ;