Retrieve all WooCommerce products without image that are in stock via SQL
The following SQL Query will allow you to retrieve products without image that are "In stock":
SELECT IDFROM wp_posts pINNER JOIN wp_postmeta pm ON p.ID = pm.post_idWHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = '_thumbnail_id')AND p.post_type = 'product'AND p.post_status = 'publish'AND pm.meta_key = '_stock_status'AND pm.meta_value = 'instock'
Or you can query it using WPDB
Class through php like:
global $wpdb;$product_ids = $wpdb->get_col( " SELECT ID FROM {$wpdb->prefix}posts p INNER JOIN {$wpdb->prefix}postmeta pm ON p.ID = pm.post_id WHERE ID NOT IN (SELECT post_id FROM {$wpdb->prefix}postmeta WHERE meta_key = '_thumbnail_id') AND p.post_type = 'product' AND p.post_status = 'publish' AND pm.meta_key = '_stock_status' AND pm.meta_value = 'instock'");// Raw outputprint_r($product_ids);