0

私は MySQL 5.1.66 を使用しており、すべての男性用シャツとそのサイズと価格を選択するための選択クエリを思い付きました。GROUP CONCAT親テーブルのサイズ列と価格列を同じ列にマージしていました。これが私が行った声明です

SELECT shirts.shirt_name, shirts.men AS main_photo, 
       GROUP_CONCAT(shirt_sizes.size_name,shirt_prices.price) AS sizes
FROM shirts 
JOIN shirts_link ON shirts_link.shirt_id=shirts.id
JOIN shirt_sizes ON shirt_sizes.id=shirts_link.size_id
JOIN shirt_prices ON shirt_prices.id=shirts_link.price_id
WHERE shirts.men!='' AND shirts_link.adult='y'
GROUP BY shirts.id

これにより、サイズ列と価格列は、select ステートメントの 1 つの列内で 2 つの別個のエンティティになりますか? 私が気づいたもう一つのことは、サイズの順序がすべて混同されていることです. たとえば、これは列の 1 つの行です。

medium29.22,large29.22,1x-large29.22,2x-large30.44,small29.22,3x-large31.70

テーブルで整理されているように、なぜスモール 3x から移行しないのですか? PHPを介してWebサイトに挿入するという点で私がやろうとしていることが発生した場合、それが自動ロードされる場合、それもそのような組織化されていない方法になると思います。どうすればこれを修正できますか?

ここでの私の最終的な目標は、作成した JavaScript アプリに各行を自動入力できる選択を作成できるようにすることです。シャツの名前、メインの写真、次に各サイズと価格をコード化した div にロードする必要があります。実際に使用されているテーブルを確認する必要がある場合はお知らせください。前もって感謝します :)

4

2 に答える 2

1

まず、 group_concat 関数の目的は、グループ化された操作で特定の列のすべての値を保持することです。例えば、

Table1
ID   field1    field2
1     ram      science
2     ramesh   maths
1     ram      maths

あなたの要件が特定の人物のサブジェクトを取得することである場合、GROUP_CONCAT は次のような結果を生成します。

ID  field1   field3
1   ram      science,maths
2   ramesh   maths

これがいくつかの洞察を与えることを願っています

于 2012-12-31T10:58:43.293 に答える
0

これを試して:

SELECT s.shirt_name, s.men AS main_photo, 
       GROUP_CONCAT(CONCAT(ss.size_name, '.', sp.price)) AS sizes
FROM shirts s 
INNER JOIN shirts_link sl ON sl.shirt_id = s.id
INNER JOIN shirt_sizes ss ON ss.id = sl.size_id
INNER JOIN shirt_prices sp ON sp.id = sl.price_id
WHERE s.men!='' AND sl.adult='y'
GROUP BY s.id
于 2012-12-31T12:55:20.370 に答える