2011年11月11日

超絶便利なMYSQLのビューVIEW機能

お願いします♪いいねとかつぶやいたりして下さい
 
2011/11/15追記

すごい。しかも curdate()を使うと例えば 10月20日にデータを作った場合、11月3日にそのビューを見るとなんとその日の日付 11月3日が適用されている。
つまり 10月20日の 90日前 ではなく、 今日 の 90日前 が自動計算される。

MYSQLは苦手意識があるのであんまり勉強したくなかった。
でもがんばって見てみたら mysql 5.0以降から ビューを作成できるとのこと。

Aテーブルとそのテーブルのビュー TMPビュー とする

MYSQLのビューとは


あらかじめ指定したフィールドや条件文で抽出した結果を表示しておく仮のテーブル。
一般的なmysql テーブルと全く同じように使える。

MYSQLのビューの更新



Aテーブルのデータを表示しているだけのTMPビュー。
だからAテーブルのデータを更新、削除、追加すれば TMPビューのデータも更新される。
逆にTMPテーブルのデータを更新、削除、追加すればAテーブルのデータも更新される。

どんな時に使うの?



例えばランキングを出したいとき。
90日前までのポイントを取得して、その合計を出したい。

・analys2_ranks ビューを 90 日前までのデータを取得し作成
・pointフィールドを合算して goukei フィールドに出す。
・goukei が多い順に並び変えて表示。

$this->Report = Classregistry::init('Report');
			
			
			$this->Report->query('create view analys2_ranks as select id, sponcer_id , from_id , point , created from analys2_reports where date_add(created,interval 90 day) > curdate()');
			
			$res = $this->Report->query('SELECT * , sum(Rank.point) as goukei  
						FROM analys2_ranks AS Rank
						GROUP BY Rank.from_id
						HAVING Rank.from_id ORDER BY goukei desc
				   ');


また、 from_id の合計ポイントを取得したい場合は

$this->Rank = Classregistry::init('Rank');
			
			$res = $this->Rank->find('all',array('conditions' => array('Rank.from_id' => 1) , 'fields' => array('sum(point) as sum_point')));
関連するタグ: cakephp MYSQL
あなたにとって有用な記事でしたか?是非ブックマークしておくことをおすすめします。
 




ライブラリを配布しちゃったり
webデザイン
Fireworks
HTMLコーディング
CSS
Dreamweaver
携帯サイト
webプログラム
PHP
正規表現
cakephp
MYSQL
javascript
webマーケティング
adwords
analytics
windows7
ショートカットキー
おすすめ情報
サイト
facebook
ライブラリ
配布
アプリ
iphone
ipad
サーバー
さくらサーバー
全ての記事を読む




トップ - 最新の記事一覧 - お問い合わせ