sql >> Databáze >  >> RDS >> Mysql

Získejte min_price produktu podle sku

Za účelem filtrování dotazu pomocí post_status nejprve musíme hledat hodnotu ve správné tabulce, což je tabulka wp posts, můžeme to udělat aktualizací našeho SQL dotazu pomocí příkazu JOIN a porovnat korelující hodnoty ve více tabulkách, v tomto případě porovnáváme product_id v wp.posts tabulka s tou v wp.postmeta tabulka.

Tabulky, které porovnáváme pomocí příkazu JOIN:

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

Níže je aktualizovaná funkce:

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;
}



  1. XML jako parametr v uložené proceduře (sql server)

  2. Podmíněná klauzule WHERE v SQL Server

  3. Jak ukládat a načítat textová data v MySQL při zachování zalomení řádků?

  4. Existuje způsob, jak v SQL (MySQL) provést kruhové ORDER BY na konkrétním poli?