Preview:
// Custom query that will return the ancestors of a given id, it will
        // return a hierarchical data of parents and children in one query
        // For detailed explanation of the query, please see link below
        // https://explainextended.com/2009/07/20/hierarchical-data-in-mysql-parents-and-children-in-one-query/
        $sql = "
            SELECT t2.id, t2.sender_id, t2.invitee_id, t2.deal_admin_id, t2.agent_structure_id, t3.level, t3.sub_level, t3.position_type
            FROM (
                SELECT
                    @r AS _invitee_id,
                    (SELECT @r := sender_id FROM " . $agentInvitationTable . " WHERE invitee_id = _invitee_id AND status = :status LIMIT 1) AS sender_id,
                    @l := @l + 1 AS lvl
                FROM (SELECT @r := :userId, @l := 0) vars, " . $agentInvitationTable . " t
                WHERE @r <> 0
            ) t1
            JOIN " . $agentInvitationTable . " t2 ON t1._invitee_id = t2.invitee_id
            LEFT JOIN  " . $agentStructureTable . " t3 ON t2.agent_structure_id = t3.id
            WHERE t2.status = :status
            ORDER BY t1.lvl DESC;
        ";
downloadDownload PNG downloadDownload JPEG downloadDownload SVG

Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!

Click to optimize width for Twitter