diff --git a/includes/wc-product-functions.php b/includes/wc-product-functions.php index b49400c5169..049c9cf3d1e 100644 --- a/includes/wc-product-functions.php +++ b/includes/wc-product-functions.php @@ -1456,24 +1456,13 @@ function wc_update_product_lookup_tables_column( $column ) { case 'virtual': $column = esc_sql( $column ); - $wpdb->query( - " - UPDATE - {$wpdb->wc_product_meta_lookup} lookup_table - SET - lookup_table.`{$column}` = 0 - " - ); - $wpdb->query( " UPDATE {$wpdb->wc_product_meta_lookup} lookup_table LEFT JOIN {$wpdb->postmeta} meta1 ON lookup_table.product_id = meta1.post_id AND meta1.meta_key = '_virtual' SET - lookup_table.`{$column}` = 1 - WHERE - meta1.meta_value = 'yes' + lookup_table.`{$column}` = IF ( meta1.meta_value = 'yes', 1, 0 ) " ); break; @@ -1481,15 +1470,6 @@ function wc_update_product_lookup_tables_column( $column ) { $column = esc_sql( $column ); $decimals = absint( wc_get_price_decimals() ); - $wpdb->query( - " - UPDATE - {$wpdb->wc_product_meta_lookup} lookup_table - SET - lookup_table.`{$column}` = 0 - " - ); - $wpdb->query( $wpdb->prepare( " @@ -1498,11 +1478,11 @@ function wc_update_product_lookup_tables_column( $column ) { LEFT JOIN {$wpdb->postmeta} meta1 ON lookup_table.product_id = meta1.post_id AND meta1.meta_key = '_price' LEFT JOIN {$wpdb->postmeta} meta2 ON lookup_table.product_id = meta2.post_id AND meta2.meta_key = '_sale_price' SET - lookup_table.`{$column}` = 1 - WHERE 1=1 - AND CAST( meta1.meta_value AS DECIMAL ) >= 0 - AND CAST( meta2.meta_value AS CHAR ) != '' - AND CAST( meta1.meta_value AS DECIMAL( 10, %d ) ) = CAST( meta2.meta_value AS DECIMAL( 10, %d ) ) + lookup_table.`{$column}` = IF ( + CAST( meta1.meta_value AS DECIMAL ) >= 0 + AND CAST( meta2.meta_value AS CHAR ) != '' + AND CAST( meta1.meta_value AS DECIMAL( 10, %d ) ) = CAST( meta2.meta_value AS DECIMAL( 10, %d ) ) + , 1, 0 ) ", $decimals, $decimals