Условия в процедуре Mysql

#mysql #conditional-statements #where-clause #procedure

#mysql #условные операторы #где-предложение #процедура

Вопрос:

Я хочу добавить условие в процедуру, но я не могу использовать (IF(Wh=0,'AND 1=1','AND D.wh_parn = 102')) Это моя процедура:

 CREATE DEFINER=`akarremote`@`%` PROCEDURE `laporan_top_brand_penjualan`(IN Wh INT, IN `Datemin` VARCHAR(191), IN `Datemax` VARCHAR(191))
BEGIN

    SELECT
        A.item_id,
        A.item_name AS ITEM,
        (
        SELECT
            SUM( C.jumlah ) AS jumlah
        FROM
            mob_penjualan B
            LEFT JOIN mob_penjualandetail C ON C.noTransaksi = B.noTransaksi
            LEFT JOIN krd_wh D ON D.wh_id = B.idWH 
        WHERE
            C.idItemProduk = A.item_id 
            AND B.TglTransaksi BETWEEN Datemin AND Datemax
            (IF(Wh=0,'AND 1=1','AND D.wh_parn = 102'))
        GROUP BY
            C.idItemProduk 
        ORDER BY
            jumlah DESC
        ) AS JML,
        (
        SELECT
            SUM( C.qty ) AS qty
        FROM
            mob_penjualan B
            LEFT JOIN mob_penjualandetail C ON C.noTransaksi = B.noTransaksi
            LEFT JOIN krd_wh D ON D.wh_id = B.idWH 
        WHERE
            C.idItemProduk = A.item_id 
            AND B.TglTransaksi BETWEEN Datemin AND Datemax
            (IF(Wh=0,'AND 1=1','AND D.wh_parn = 102'))
        GROUP BY
            C.idItemProduk 
        ORDER BY
            qty DESC
        ) AS QTY 
    FROM
        krd_item A
    ORDER BY
        JML DESC, QTY DESC;
    
END
  

Каково решение?

Ответ №1:

 WHERE C.idItemProduk = A.item_id 
  AND B.TglTransaksi BETWEEN Datemin AND Datemax
  AND IF(Wh=0, 1, D.wh_parn = 102)