Use placeholders and $wpdb->prepare(); found $sql

I create my custom plugin and test in plugin check plugin but it give me error like
Use placeholders and $wpdb->prepare(); found $sql

// Execute

$sql = "SELECT {$found_rows} p.ID AS course_id, X.*,IF(X.status = %s AND uim.meta_value IS NOT NULL, uim.meta_value, X.status) AS status FROM ( SELECT ui.* FROM `{$stepup_lms_user_items}` ui  LEFT JOIN `{$stepup_lms_user_items}` uix    ON ui.item_id = uix.item_id AND ui.user_id = uix.user_id    AND ui.user_item_id < uix.user_item_id  WHERE uix.user_item_id IS NULL) X {$join}   {$where}    {$limit}";

        // Only the dynamic value goes through prepare
        $rows = $db->wpdb->get_results(
                $wpdb->prepare( $sql, 'finished' )
        );

Also I write query inside $wpdb->prepare(); then it give another error like

Use placeholders and $wpdb->prepare(); found interpolated variable {$found_rows} at "SELECT {$found_rows} p.ID AS course_id, X.*,IF(X.status = %s AND uim.meta_value IS NOT NULL, uim.meta_value, X.status) AS status FROM (tSELECT ui.*tFROM {$stepup_lms_user_items} uitLEFT JOIN {$stepup_lms_user_items} uixtON ui.item_id = uix.item_idtAND ui.user_id = uix.user_idtAND ui.user_item_id < uix.user_item_idtWHERE uix.user_item_id IS NULL) X {$join}t{$where}t{$limit}"

But It is not solve.

Please help me

Thanks in advance.

I try bellow links

I refer wordpress document https://make.wordpress.org/core/2022/10/31/postponed-to-wp-6-2-escaping-table-and-field-names-with-wpdbprepare/

also view other resource https://github.com/WordPress/WordPress-Coding-Standards/issues/2442

I want to resolve my ERROR and warning in Plugin Check plugin.