以下に示すように、リストされた製品が現在の製品プロパティと階層的に一致するように、製品詳細ページに類似製品を表示する必要があります。
- サイズ、色、カテゴリ、会社は現在の製品と一致する必要があります
- サイズ、色、カテゴリは現在の商品と一致する必要があります
- サイズ、色は現在の製品と一致する必要があります
- サイズは現在の製品と一致する必要があります
私のSQLクエリは次のとおりです。
(SELECT pd.product_id, pd.name, p.price
FROM mg_product_description pd
JOIN `mg_product` p ON p.product_id = pd.product_id
WHERE
pd.size_id = '33' AND
pd.color_id = '2' AND
pd.category_id = '3' AND
pd.company_id = '1' AND
pd.product_id != '53' AND
p.status = '1'
ORDER BY RAND() LIMIT 10
)
UNION
(SELECT pd.product_id, pd.name, p.price
FROM mg_product_description pd
JOIN `mg_product` p ON p.product_id = pd.product_id
WHERE
pd.size_id = '33' AND
pd.color_id = '2' AND
pd.category_id = '3' AND
pd.product_id != '53' AND
p.status = '1'
ORDER BY RAND() LIMIT 10
)
UNION
(SELECT pd.product_id, pd.name, p.price
FROM mg_product_description pd
JOIN `mg_product` p ON p.product_id = pd.product_id
WHERE
pd.size_id = '33' AND
pd.color_id = '2' AND
pd.product_id != '53' AND
p.status = '1'
ORDER BY RAND() LIMIT 10
)
UNION
(SELECT pd.product_id, pd.name, p.price
FROM mg_product_description pd
JOIN `mg_product` p ON p.product_id = pd.product_id
WHERE
pd.size_id = '33' AND
pd.product_id != '53' AND
p.status = '1'
ORDER BY RAND() LIMIT 10
)
53 - 現在の製品 ID とステータスが利用可能であることを示します。
上記のクエリを最適化する方法はありますか?
注意 必要な出力: 類似商品が 10 個必要です。条件 1 に一致する商品が 4 つある場合は、最初に順不同に並べる必要があります。同様に、その下に他の条件に一致する製品をリストする必要があります。
前もって感謝します!