私は2つのデータベーステーブルを持ち、両方とも多数の行を持っています。最初の表は製品の概要を示し、2番目の表は製品の追加情報を示しています。テーブルは以下のようになります:私は一致させることにより、製品に対応するaddtionalの情報を見つけることができています次のクエリではMysqlのクエリ - "フィルタ"を含める方法
#Products + ---------- + ------ + ------------ + | Product_Id | Status | EAN | + ---------- + ------ + ------------ + | 1 | 1 || | 2 | 1 || | 3 | 1 | 6548214656 | | 4 | 2 | 245511411241 | | 5 | 1 | 8888888888 | | etc. | etc . | etc. | + ---------- + ------ + ------------ +
#Info + ------- + ------------ + --------- + ---------- + | Info_Id | EAN | Info_Type | Info_Value | + ------- + ------------ + --------- + ---------- + | 1 || brand | brand1 | | 2 || type | type1 | | 3 || price | 0.00 | | 4 || brand | brand6 | | 5 || type | type3 | | 6 || price | 15.00 | | 7 | 6548214656 | brand | brand34 | | 8 | 6548214656 | type | type1 | | 9 | 6548214656 | price | 99.00 | | 10 | 245511411241 | brand | brand324 | | 11 | 245511411241 | type | type1 | | 12 | 245511411241 | price | 98.00 | | 13 | 8888888888 | brand | brand1 | | 14 | 8888888888 | price | 9.00 | | 14 | 8888888888 | type | type4 | | etc. | etc. | etc. | etc. | + ------- + ------------ + --------- + ---------- +
EANさん:
select i.EAN , p.ProductStatus , max(case info_type when 'brand' then info_value end) as brand , max(case info_type when 'type' then info_value end) as [type] , max(case info_type when 'price' then info_value end) as price from #Info i inner join #Products p on p.ean = i.ean WHERE p.Status=1 group by i.EAN, p.ProductStatus ORDER BY P.Product_id DESC LIMIT 10
これは私に次の表を提供:
+ ------------ + ------ + -------- + ----- + ----- + | EAN | Status | brand | type | price | + ------------ + ------ + -------- + ----- + ----- + || 1 | brand1 | type1 | 0.00 | | 6548214656 | 1 | brand34 | type1 | 99.00 | || 1 | brand6 | type3 | 15.00 | | 8888888888 | 1 | brand1 | type4 | 9.00 | | etc. (10 products) | + ------------ + ------ + -------- + ----- + ----- +
しかし、今では特定のブランド、種類または価格。たとえば、価格が50より大きい(Info_Type =価格とInfo_Value> 50.00)製品を選択し、2番目のブランドが特定のブランドである場合、 "brand1"(Info_Type =ブランドとInfo_Value = brand1)と言うことができます。誰かが私の質問にこれを含める方法を教えてもらえますか?
:+ ------------ + ------ + -------- + ----- + ----- + | EAN | Status | brand | type | price | + ------------ + ------ + -------- + ----- + ----- + || 1 | brand1 | type1 | 0.00 | | 6548214656 | 1 | NULL | type1 | 99.00 | || 1 | NULL | type3 | 15.00 | | 8888888888 | 1 | brand1 | type4 | 9.00 | | etc. (10 products) | + ------------ + ------ + -------- + ----- + ----- +
は、私は次のような結果を見たい:
select i.EAN , p.ProductStatus , max(case when (info_type = 'brand' AND info_value='brand1') then info_value end) as brand , max(case info_type when 'type' then info_value end) as [type] , max(case info_type when 'price' then info_value end) as price from #Info i inner join #Products p on p.ean = i.ean WHERE p.Status=1 group by i.EAN, p.ProductStatus ORDER BY P.Product_id DESC LIMIT 10
はしかし、これは次のような結果が得られます。多くのものを試してみました、私は望ましい結果に来た最も近いが、次のクエリです
+ ------------ + ------ + -------- + ----- + ----- + | EAN | Status | brand | type | price | + ------------ + ------ + -------- + ----- + ----- + || 1 | brand1 | type1 | 0.00 | | 8888888888 | 1 | brand1 | type4 | 9.00 | | etc. (10 products) | + ------------ + ------ + -------- + ----- + ----- +
誰が私を助けますか? :)
しかし、私はブランドの選択を紛失しています。 – mh3982
@ mh3982。 。 。クエリは、あなたの質問のクエリに基づいています。私はフィルタリングのために 'having 'を使う方法を指摘していました。 –
Thnx。価格選択で+0はどこですか?とにかく、これは解決策のようです!どうもありがとうございました! – mh3982