2017-02-01 18 views
1

曖昧なタイトルの最初の申し訳はありませんが、私は実際にそれをどのようにフレーズするのか分かりませんし、解決策をまだ見つけられていないと思います。MySQLグループでユニークな組み合わせを探す

私はOSCommerceの修正インストールを使用して、カスタムレポートのためのテーブル内で注文製品オプション/属性の一意の組み合わせを見つけることを試みています。製品の各オプション/属性は、1行に格納されます。製品は複数のオプション/属性を持つことができます。

私が返す次のSQLクエリ

SELECT 
sum(op.products_quantity) AS attrCnt, 
opa.products_options AS prodOption, 
opa.products_options_values AS prodOptionValue 
FROM 
store_orders_products_attributes opa 
LEFT JOIN store_orders o ON o.orders_id = opa.orders_id 
LEFT JOIN store_orders_products op ON op.orders_products_id = opa.orders_products_id 
WHERE 
o.customers_id = '99999' 
AND (o.date_purchased BETWEEN CAST('2017-01-03' AS DATE) 
AND CAST('2017-02-01' AS DATE)) 
AND op.products_id = 88888 
GROUP BY 
opa.products_options_values 
ORDER BY 
opa.products_options, 
opa.products_options_values 

あります、その期間の注文合計製品が7だった

+---------+---------------+-----------------+ 
| attrCnt | prodOption | prodOptionValue | 
+---------+---------------+-----------------+ 
|  6 | Select Colour | Blue   | 
|  1 | Select Colour | Yellow   | 
|  1 | Select Size | L    | 
|  2 | Select Size | M    | 
|  4 | Select Size | S    | 
+---------+---------------+-----------------+ 

を1大、2中、4小、 - 6青を、 1イエロー。それでL(大)が青色か黄色かどうかは分かりません。

私が望む結果は、以下のようなものです(L - BlueかBlue - Lかどうかは関係ありません):

+---------+-----------------+ 
| attrCnt | prodOptionCombo | 
+---------+-----------------+ 
|  1 | L - Blue  | 
|  2 | M - Blue  | 
|  3 | S - Blue  | 
|  1 | S - Yellow  | 
+---------+-----------------+ 

この情報を含むテーブルがstore_orders_products_attributesです:

products_options欄には、そのような選択フレーバーとして、任意の分類テキストのグループ化(フリーテキスト)を含有するXYZなどを選択し、それは常に

カラー/サイズも文句を言わないことができ

必ずしも2つあるとは限りません製品ごとに、0,1または12またはそれ以上になることがあります。

+-------------------------------+-----------+--------------------+------------------+-------------------------+ 
| orders_products_attributes_id | orders_id | orders_products_id | products_options | products_options_values | 
+-------------------------------+-----------+--------------------+------------------+-------------------------+ 
|       1420 |  596 |    2626 | Select Colour | Blue     | 
|       1421 |  596 |    2626 | Select Size  | M      | 
|       1438 |  600 |    2656 | Select Colour | Blue     | 
|       1439 |  600 |    2656 | Select Size  | M      | 
|       1445 |  601 |    2668 | Select Colour | Blue     | 
|       1446 |  601 |    2668 | Select Size  | S      | 
|       1447 |  602 |    2671 | Select Colour | Yellow     | 
|       1448 |  602 |    2671 | Select Size  | S      | 
|       1464 |  611 |    2705 | Select Colour | Blue     | 
|       1465 |  611 |    2705 | Select Size  | S      | 
|       1502 |  634 |    2791 | Select Colour | Blue     | 
|       1503 |  634 |    2791 | Select Size  | L      | 
    +-------------------------------+-----------+--------------------+------------------+-------------------------+ 

store_orders_productsテーブルが含まれています

+--------------------+-----------+-------------+----------------+---------------+-------------------+ 
| orders_products_id | orders_id | products_id | products_model | products_name | products_quantity | 
+--------------------+-----------+-------------+----------------+---------------+-------------------+ 
|    2626 |  596 |  88888 | Code123  | Gloves  |     1 | 
|    2656 |  600 |  88888 | Code123  | Gloves  |     1 | 
|    2668 |  601 |  88888 | Code123  | Gloves  |     1 | 
|    2671 |  602 |  88888 | Code123  | Gloves  |     1 | 
|    2705 |  611 |  88888 | Code123  | Gloves  |     2 | 
|    2791 |  634 |  88888 | Code123  | Gloves  |     1 | 
+--------------------+-----------+-------------+----------------+---------------+-------------------+ 

任意のアイデア?始めるため

+0

彼らは同じ列(products_options_values)2つの異なる属性(色やサイズ)を格納している理由を私は理解できません、これは概念上の問題ではありませんか? – mounaim

+0

@mounaimあなたはHarald Ponce de LeonオリジナルのOSCommerceの作成者と話をしなければなりません。これらの情報は、注文前に同様の方法で保管され、注文後も同様の方法で保管されます。オプションは、異なる価格設定/体重(キログラム)など+/-お金を適用することができます 注文の表示が 製品名 ある - 選択サイズ= L そのようにデータを格納した結果 - カラー=ブルー を選択します。 – PeteB

+0

@mounaimまた、サイズ、色、xyzなどが独自の列を持つ場合は、オプションの数は無制限です。 – PeteB

答えて

0

、生のテーブルの代わりにこのサブクエリを使用します。

(
select a1.orders_id, 
     a1.products_options_values as sizeval, 
     a2.products_options_values as colourval 
from store_orders_products_attributes a1 
inner join store_orders_products_attributes a2 
    on a1.orders_id = a2.orders_id 
where a1.products_options = 'Size' 
and a2.products_options = 'Colour' -- Yay, another brit 
) x1 
+0

偉大なアイデアですが、最初の投稿で申し訳ありませんが、products_optionsにはどの分類クライアントが入力した、Flavorの選択、容量の選択など – PeteB

関連する問題