Mysql
 sql >> Base de données >  >> RDS >> Mysql

Obtenir le prix minimum du produit par sku

Afin de filtrer la requête via le post_status nous devons d'abord rechercher la valeur dans la table correcte qui est la table wp posts, nous pouvons le faire en mettant à jour notre requête SQL à l'aide de l'instruction JOIN et faire correspondre les valeurs corrélées dans plusieurs tables, dans ce cas, nous faisons correspondre le product_id dans le wp.posts table avec celle du wp.postmeta tableau.

Les tables que nous comparons à l'aide de l'instruction JOIN :

  • wp.posts $wpdb->posts
  • wp.postmeta $wpdb->wc_product_meta_lookup

Vous trouverez ci-dessous une fonction mise à jour :

function get_product_min_price_by_sku( $sku ) {
    global $wpdb;

    $min_price = $wpdb->get_var(
        $wpdb->prepare(
            "
            SELECT MIN(lookup.min_price) 
            FROM {$wpdb->wc_product_meta_lookup} AS lookup
            INNER JOIN {$wpdb->posts} AS posts ON lookup.product_id = posts.id
            WHERE
            posts.post_type IN ( 'product', 'product_variation' )
            AND posts.post_status = 'publish'
            AND lookup.sku = '%s'
            LIMIT 1
            "
        , $sku)
    );

    return $min_price;
}