私は今、より高度な方法でMySQLクエリを使用する方法を学び始めたばかりなので、これを説明する方法は分かりません。ここで私が持っているものです。複数の属性を持つ列をMySQLに追加する
SELECT pa.displayvalue as Brand
FROM product p
JOIN categoryheader ch ON ch.templatetype = 0 AND p.categoryid=ch.categoryid AND ch.isactive=1
JOIN categorydisplayattributes cda ON ch.headerid = cda.headerid AND ch.categoryid = cda.categoryid AND cda.templatetype = ch.templatetype AND cda.isactive=1
JOIN productattribute pa ON p.productid = pa.productid AND cda.attributeid = pa.attributeid AND pa.localeid = 1 AND pa.isactive =1
JOIN attributenames an ON pa.attributeid = an.attributeid AND an.localeid = 1
WHERE p.isactive = 1 AND p.categoryid = 4871
AND an.attributeid = 113319;
だから私は、そのクエリを持っており、文字通り、私がやりたいすべては、私はちょうど追加したい
「= 113319とan.attributeid」のための別の列を追加することです別の列が113319の代わりに、1762という値を隣の列に引っ張りたいのです。
したがって、列1には「And.attributeid = 113319」という値がすべて格納され、列2には「And.attributeid = 1762」という値がすべて格納されます。
私は一種の仕事にこのコードを持って:
SELECT pa.displayvalue as Brand
FROM product p
JOIN categoryheader ch ON ch.templatetype = 0 AND p.categoryid=ch.categoryid AND ch.isactive=1
JOIN categorydisplayattributes cda ON ch.headerid = cda.headerid AND ch.categoryid = cda.categoryid AND cda.templatetype = ch.templatetype AND cda.isactive=1
JOIN productattribute pa ON p.productid = pa.productid AND cda.attributeid = pa.attributeid AND pa.localeid = 1 AND pa.isactive =1
JOIN attributenames an ON pa.attributeid = an.attributeid AND an.localeid = 1
WHERE p.isactive = 1 AND p.categoryid = 4871
AND an.attributeid = 113319;
SELECT pa.displayvalue as Type
FROM product p
JOIN categoryheader ch ON ch.templatetype = 0 AND p.categoryid=ch.categoryid AND ch.isactive=1
JOIN categorydisplayattributes cda ON ch.headerid = cda.headerid AND ch.categoryid = cda.categoryid AND cda.templatetype = ch.templatetype AND cda.isactive=1
JOIN productattribute pa ON p.productid = pa.productid AND cda.attributeid = pa.attributeid AND pa.localeid = 1 AND pa.isactive =1
JOIN attributenames an ON pa.attributeid = an.attributeid AND an.localeid = 1
WHERE p.isactive = 1 AND p.categoryid = 4871
AND an.attributeid = 1762;
をしかし、これは、二つの別々の結果としてのNavicatで返されます。私は、これらの両方を1つの結果ではなく2つの列として、それぞれ1つの列を持つ2つの結果の代わりにしたいと思います。
ご覧のとおり、すべての行は、最後の行を除いて、それぞれの選択肢で同じです。
また、an.attributeidの別の列を取得するために、そのコード全体を2回使用するよりも良い方法があるように感じます。それにもかかわらず、私は私が得ることを取る。
ご意見がありましたら、どうもありがとうございます。
あなたがしていることはやりにくく、99.999999999%の時間は良い考えではありません。行は関連するデータを表すものであり、関連しない列を描画したページの行ではありません。そのような出力を探しているときは、アプリケーションレイヤーで処理することをお勧めします。 – Uueerdo
@Uueerdoは完全に同意します。アプリケーションレベルで2つの処理方法を追加します:2つのクエリを実行して結果を並べて表示するか、1つの中間クエリを実行して、両方の結果を含むテーブルを1つのテーブルに作成します。そのテーブルに対してクエリを実行します。 – qoba
私はこれらの数字を変更しようとしているので、製品の属性を引き出しています。その結果、1つの数字が一連の商品のブランド名を引き出し、それ以外の数字がすべてのブランドタイプを引き出します。私がしようとしていることは、ブランドとタイプをリストアップするCSVを作ることです。どちらもお互いに関連しています。したがって、これが優れていれば、ヘッダーは「ブランド」と「タイプ」となり、各行には各製品のブランドとタイプが入力されます。 – DarkMatter