2011-01-30 4 views
2

しばらく検索しましたが、私の問題の答えを見つけることができません。 Iこのようになりますテーブルを持っている:列として異なる値を使用してMySQLビューを作成します。

「名前」列の下の値は明確であり、Aがある
date   m1  m2  m3 
2011-01-01 online offline online 
2011-01-02 offline offline online 

date  name status 
2011-01-01 m1 online 
2011-01-01 m2 offline 
2011-01-01 m3 online 
2011-01-02 m1 offline 
2011-01-02 m2 offline 
2011-01-02 m3 online 

私は次のようになりますルックスビューを作成したいですたとえば20の異なる値(m1 ... m20)の固定数ですが、時間が経つにつれて増加する可能性があります。このようなビューを作成することは可能ですか?はいの場合、どうですか?

多くのありがとうございます。

CREATE VIEW yourview AS 
SELECT 
    date, 
    MAX(IF(name = 'm1', status, NULL)) m1, 
    MAX(IF(name = 'm2', status, NULL)) m2, 
    MAX(IF(name = 'm3', status, NULL)) m3 
FROM yourtable 
GROUP BY date; 

ビュー:列の数が可変で

答えて

3

結果セットは、あなたが本当にそれをしたい場合しかし、あなたはGROUP BYMAXIFの組み合わせを使用することができ、通常は悪い考えですあなたがVを再作成する必要がありますので、列の数が可変でビューを作成することはできないことを

 
date  m1  m2  m3  
2011-01-01 online offline online 
2011-01-02 offline offline online 

注意:あなたが望んでいたとして、あなたにこのデータを提供します列の数が変化するたびに表示されます。

+0

ありがとうございます。 – kelly

+0

MAX()を使用するポイントは何ですか? MAX()がなくても動作しないはずですか? –

関連する問題