バージョン選択

フォーラム

メニュー

オンライン状況

86 人のユーザが現在オンラインです。 (73 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 86
もっと...

サイト内検索

質問 > フロント機能 > 商品一覧で重複した商品をまとめたい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
rijye
投稿日時: 2017/10/16 20:53
対応状況: −−−
常連
登録日: 2012/6/12
居住地: 三重県
投稿: 62
商品一覧で重複した商品をまとめたい
お世話になります。

題名からは少し分かり辛いですが、単刀直入に質問させていただきますと
商品のサブタイトル1が重複しているものを、商品一覧(カテゴリページ)で1つに纏めたいと思っています。

例)
商品1:サブタイトル1
商品2:サブタイトル1
商品3:サブタイトル2
商品4:サブタイトル2
商品5:サブタイトル3

カテゴリページで
商品1、商品3、商品5 が表示される

そこで色々と調べた結果、LC_Page_Products_list.phpのlfGetSearchConditionの最後に
$searchCondition['where'] .= ' AND EXISTS(SELECT sub_title1 FROM dtb_products WHERE product_id = alldtl.product_id )';

を追加しましたが結果変わりませんでした。

上記内容を実現しようと思うと恐らく場所は間違っていないかとは思うのですが、あまりSQLには詳しくないので記述の間違いや、他に良い方法があればご教授頂ければと思います。
(根本的に勘違いしている可能性は大いにあります)

宜しくお願いします。



▼テンプレート
[EC-CUBE] 2.13.5(新規インストール)
[PHP] PHP 5.4.16
[データベース] MySQL 5.5.41-MariaDB
[導入プラグインの有無] カテゴリ別コンテンツエリア追加(2.13系)
karin
投稿日時: 2017/10/16 21:42
対応状況: −−−
仙人
登録日: 2008/9/15
居住地: 東京都
投稿: 689
Re: 商品一覧で重複した商品をまとめたい
rijye様

sub_title1でGROUP BYする方法はいかがでしょうか?

SQLのみで試してみて、問題なければプログラムに実装するほうがいいのかなと思います。



----------------

yuh
投稿日時: 2017/10/17 1:15
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1818
Re: 商品一覧で重複した商品をまとめたい

$searchCondition['where'] .= ' AND
alldtl.product_id NOT IN (
    SELECT 
        product_id 
    FROM 
        dtb_products AS p1 
    WHERE 
        p1.product_id < (
            SELECT 
                MAX(p2.product_id) 
            FROM 
                (
                    SELECT 
                        product_id, 
                        sub_title1  
                    FROM 
                        dtb_products
                ) AS p2 
            WHERE 
                p1.sub_title1  = p2.sub_title1 
        )
    )';

こんな感じだとは思いますが、
上記のクエリを使用しても、GROUP BY を使用しても件数が多ければかなり負荷のかかるクエリになってしまうので、根本的にデータの持ち方を考えて別の実装を行った方がいいかとは思います。


----------------


http://ec-lab.net/

rijye
投稿日時: 2017/10/17 9:30
対応状況: 確認中
常連
登録日: 2012/6/12
居住地: 三重県
投稿: 62
Re: 商品一覧で重複した商品をまとめたい
ご返信有難うございます。

yuh様のクエリを使用した所、理想通りの結果が得られました。
ありがとうございました。

しかしご指摘いただいております通り、表示まで時間がかかる結果となりました。

GROUP BYも色々と試してはおりますが、如何せんSQLがあまり理解できていない為、未だ結果を得ることができません。
もう少し粘ってみて、不可が改善されなかったら別の手段を取ろうかと思います。

引き続き、別の案があればご提案頂けると幸いです。
yuh
投稿日時: 2017/10/17 12:04
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1818
Re: 商品一覧で重複した商品をまとめたい
多分その部分を速度面でも問題なく実装はできますが、データの持ち方や管理画面、中間テーブル作成等色々カスタマイズ箇所が増えるのでインテグレートパートナーの会社様にご依頼されるか、別の手段を取った方がいいかと思います。


----------------


http://ec-lab.net/

rijye
投稿日時: 2017/10/17 17:09
対応状況: 解決済
常連
登録日: 2012/6/12
居住地: 三重県
投稿: 62
Re: 商品一覧で重複した商品をまとめたい
色々とご教授頂き有難うございます。
取り急ぎ、若干ではありますが速度が改善致しましたので、一旦は終了と致しました。

やはりおっしゃっている通り、
キチンと実装するならば別の手段が良いと思われますし、
動作自体はyuh様のもので完結しておりますが、一応記載致します。


$searchCondition['where'] .= ' AND alldtl.product_id NOT IN(
    SELECT 
        product_id 
    FROM 
        dtb_products
    WHERE 
        alldtl.product_id < (
            SELECT 
                MAX(p2.product_id) 
            FROM 
                (
                    SELECT 
                        DISTINCT sub_title1, product_id 
                    FROM 
                        dtb_products 
                ) AS p2
            WHERE
                alldtl.sub_title1 = p2.sub_title1
        )
)';
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,300名です
総投稿数は109,692件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.