4

目標

パラメーターが null でない場合にのみ、"where" 句を使用します。

問題

構文がわかりません。

私が持っているもの

機能しない次の構文。

CREATE DEFINER=`root`@`localhost` PROCEDURE `getProductsListForHome`
(IN `inOffer` INT, IN `categoryId` INT)
BEGIN
    SELECT (MIN(`map`.`Product_Price`)) as `minProductPrice`,
        (MAX(`map`.`Product_Price`)) as `maxProductPrice`,
        `pr`.`Product_Name` as `productName`,
        `ca`.`Category_Name` as `categoryName`
    FROM `bm_market_products` as `map`
    JOIN `bm_products` as `pr` ON `map`.`Product_Id` = `pr`.`Product_Id`
    JOIN `bm_products_category_relationship` as `car` 
    ON `pr`.`Product_Id` = `car`.`Product_Id`
    JOIN `bm_product_categories` as `ca` ON `car`.`Category_Id` = 
    `ca`.`Category_Id`

    WHERE `map`.`Product_State` = inOffer

    IF (`categoryId` != null) THEN
        AND `ca`.`Category_Id` = `categoryId`
    END IF;

    GROUP BY `map`.`Product_Id`;
END

問題は19行目。

質問が重複していますか?

私はそうは思わない。私はこの主題について検索しましたが、成功しませんでした — それから私は投稿するためにここに来ました.

詳細

ここで制御フロー関数について読みましたが、まだ混乱しています。

前もって感謝します!

4

3 に答える 3