Problem is all over your syntax. I reformatted your query some, but don't know exactly what refers to what. As was stated in a comment, simplify your queries individually to find out if they work, THEN add to the next in the chain.
The biggest example to clarify is joining to other tables. Whenever joining, you do the query and assign it an alias name reference. THAT Alias is the basis to the rest of the query. Do not confuse an alias WIHTIN a sub-select to the outer query. Without doing your exact query, look into the following
SELECT
parent1.parent1_id, etc, etc, etc
FROM
parent1
LEFT JOIN
( SELECT
child1.child1_id,
child1.child1_content
FROM
child1
WHERE
child1.child1_id = parent1.child1_id ) CHILD1
The lower-case "child1" INNER query is NOT the same as the OUTER upper case "CHILD1" as sampled above here. What I THINK you are trying to get is more of the following. Also note I am applying ALIASES to help confirm the difference between the ACTUAL table name vs whatever COULD be subquery conditions.
SELECT
P1.parent1_id,
C1.child1_content,
C1X.child1_extrasID,
C1X.child1_extrasContent
FROM
parent1 P1
LEFT JOIN child1 C1
on P1.child1_id = C1.child1_id
LEFT JOIN child1_extras C1X
on P1.child1_id = C1X.child1_id
Notice each additional table is joined from a possible previous. I also try to always have me left-side table (first within the query) joined or left-joined to the second alias result key ID.
Try the above simplified sample query with a few fixed criteria just to see if it works. THEN apply your extra table joins, where, order by, offset, etc.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…