2

さて、私は製品テーブルを持っています。テーブル名は「orders」です。関連する列は次のとおりです。

orders table: ID, Style, Color, XXS, XS, SM, MD, LG, Other

ID 列の値に対応する数字のカンマ区切りのリストを提供します (これが主キーです)。

これが課題です。列 XXS、XS、SM、MD、LG には数字が含まれます。列 Other にはテキストが含まれています。注文を入力するたびに、それらの列に数字が入力されますが、最後の列には他の何かのテキスト説明が入力されます. いくつかの行の例を次に示します。

Style: 2000, Color: RED. XS: 5, MD: 5, Other: Youth 5-L
Style: 2000, Color: RED, XS: 3, L: 15
Style: 2000, Color: RED, Other: Youth 15 XS
Style: 2000, Color: RED, MD: 10, L:10
Style: 2000, Color: BLACK, MD: 15, Other: Youth - 10-L
Style: 2000, Color: BLACK, MD: 20, LG: 25

私が必要としているのは、スタイル、次に色でそれらをグループ化し、XXS、XS、SM、MD、および LG の各列を (個別に) 合計し、他の列からテキストを吐き出すクエリです。また、このリストを Style、次に Color でソートする必要があります。最後に、コンマ区切りの値リストに存在する行のリストである必要があります。上記の表からの望ましい出力は次のとおりです。

Style: 2000, Color: BLACK. MD: 35, LG: 25
Style: 2000, Color: BLACK. Other: Youth - 10-L
Style: 2000, Color: RED. XS: 8, MD: 15, L: 25
Style: 2000, Color: RED. Other: Youth 5-L
Style: 2000, Color: RED. Other: Youth 15 XS

それが理にかなっていることを願っています!行は顧客によって入力されるため、行を分けておく必要があり、誰が何を注文したかを正確に保持する必要があります。

その他の列が、同じスタイルと色の場合に特別な一意の文字シーケンスで区切られた文字列に連結できる場合のボーナス ポイント (区切り記号として |-| を使用) 以下の例:

Style: 2000, Color: BLACK. MD: 35, LG: 25, Other: Youth - 10-L<br>
Style: 2000, Color: RED. XS: 8, MD: 15, L: 25, Youth 5-L|-|Youth 15-XS

編集!!!!!

すぐに話して、自分で解決したと思います。興味のある方は、問題のクエリを次に示します。私はこれに数時間以上答えることができません。

SELECT SUM(XXS) as XXS, SUM(XS) as XS, SUM(SM) as SM, SUM(MD) as MD, SUM(LG) as LG GROUP_CONCAT(Other SEPARATOR '|-|') as Other, Style, Color
FROM orders
WHERE ID IN(List...)
GROUP BY Style, Color
ORDER BY Style, Color;

このクエリは、Style と Color の同様の値に基づいてすべての行をグループ化し、数値を含む列を合計し、テキストを含むすべての列をプログラムで解析可能な形式に連結します。

4

2 に答える 2

0

答えを受け入れることができるようにするために、ここにあります:

SELECT SUM(XXS) as XXS, SUM(XS) as XS, SUM(SM) as SM, SUM(MD) as MD, SUM(LG) as LG GROUP_CONCAT(Other SEPARATOR '|-|') as Other, Style, Color
FROM orders
WHERE ID IN(List...)
GROUP BY Style, Color
ORDER BY Style, Color;
于 2013-06-08T09:03:50.913 に答える