作業環境の概要Magento Product Collectionグループ最小価格は最低価格の製品IDですか?
私たちは、顧客やディーラーの両方を持っているウェブサイト上で働いています。各ディーラーは、製品ごとに独自の価格を設定することができます。
生産コレクションデータには、その販売者の価格を持つ製品ごとに別の複製レコード(CLONING PRODUCT)があります。たとえば、マスターカタログにIPHONE 6Sがある場合。 Iphone 6を扱う5人以上のディーラーは、独自の価格を持つことができます。製品のクローニング出品者ID
要件私はディーラーの最低価格を持つリストカテゴリ賢明な製品を取得する必要があります
に関連した新製品のIDを作成します。最低価格に基づいてそのリストをソートする必要もあります。私は現在、私は、カテゴリに応じて、最低価格を持つすべての製品を一覧表示することができます
を試してみました何
。
$productCollection = Mage::getResourceModel('catalog/product_collection')
->addAttributeToSelect('sellingprice')
->setStoreId($storeId)
->joinField('category_id', 'catalog/category_product', 'category_id', 'product_id=entity_id', null, 'left')
->addAttributeToFilter('category_id', array('in' => $_POST['category_id']))
->addAttributeToFilter('status', array('eq' => 1))
->addAttributeToFilter('dis_continue', array('eq' => 0));
$productCollection->addAttributeToFilter('seller_id', array('in' => $seller_list));
$productCollection->addExpressionAttributeToSelect(
'lowest_price', 'IF(({{special_from_date}}<=now() AND {{special_to_date}}>=now() OR {{special_from_date}} IS NULL AND {{special_price}}>0),{{special_price}},IF({{sellingprice}}>0,{{sellingprice}},{{price}}))', array('special_from_date', 'special_to_date', 'special_price', 'sellingprice', 'price'));
$productCollection->getSelect()->columns('MIN(IF((IF(at_special_from_date.value_id > 0, at_special_from_date.value, at_special_from_date_default.value)<=now() AND IF(at_special_to_date.value_id > 0, at_special_to_date.value, at_special_to_date_default.value)>=now() OR IF(at_special_from_date.value_id > 0, at_special_from_date.value, at_special_from_date_default.value) IS NULL AND at_special_price.value>0),at_special_price.value,IF(at_sellingprice.value>0,at_sellingprice.value,at_price.value))) as l_price')->group('product_name');
ディーラーの販売価格、特別価格、MRPの中で最も低い値を見つけます。
グループを使用するすべてのデータを製品名でグループ化し、最小値の最小値を取得し、最小値に応じて値をソートします。
PROBLEM
私はユニークな製品を持つことができるように、私は名前、GROUP BYを使用していますが、私は最低価格を持っている関連した販売者の製品IDを取得することはできませんよということで説明したように。売り手IDが最低価格である必要があります
GROUP BY常に最初の行を返しますが、MIN()関数は最低価格を返します。最初の行は、最低価格の関連する製品IDを持っていません