人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MySQLの演算について質問です。

SELECT *,(anda/dasuu) AS daritu FROM baseball WHERE daritu<'0.3';

のようにして打率を出しています。
しかし、WHEREを入れるとエラーになります。

書き方が悪いと思うのですが、ご指摘いただけないでしょうか?

また、darituフィールドを作成する時、小数点第2位まで
SQL文だけで絞る方法があれば、教えて下さい。

●質問者: kt26
●カテゴリ:ウェブ制作
✍キーワード:AS baseball MySQL SELECT SQL
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● mass3
●10ポイント

daritu は数値型だから、where句で条件を書くときにシングルクォートが要らないと思います。

SELECT *,(anda/dasuu) AS daritu FROM baseball WHERE daritu < 0.3;

◎質問者からの返答

ありがとうございます。ただ、なぜかエラー(queryが実行出来ない)になります。


2 ● whitecat77
●10ポイント

MySQLのバージョンが4.1以上でしたら、副問合わせが可能です。

一度、darituを含んだテーブルを作成し、そこから*で引っ張ってくることで実現できると思います。


また、小数点第2位まで絞る方法としては、

切り捨ての場合はtruncate(数値、小数点以下の位)という関数を用いて書くことができます。


以上を合わせると・・・

SELECT * from

(SELECT *, truncate(anda/dasuu, 2) AS daritu FROM baseball )

WHERE daritu<'0.3';


四捨五入はround(数値、小数点以下の位)というのがありますが、

これは動作が環境に依存するようですので、結果が予想通りにならないことがあるようです。


3 ● Mook
●80ポイント

先ほどは、ガセのコメント失礼しました。

(0.3 でも '0.3'でも動作しますね。)


http://dev.mysql.com/doc/refman/4.1/ja/select.html

にあるように、WHERE 句ではエイリアス名は使えないようです。


なので今回の場合は面倒でも、

select *, round(anda/dasuu,2 ) as daritsu from baseball where round(anda/dasuu,2 ) < 0.3;

のように同じ表記を WHERE 句に書く必要があります。


あっ、ちなみに2桁の表記は上記にあるとおりです。

◎質問者からの返答

ありがとうございます。希望通りの結果を得ることが出来ました。


エイリアス名が指定出来ないから表示出来なかったんですね。。

大変勉強になりました。


4 ● whitecat77
●10ポイント

すみません。

SELECT * from

(SELECT *,(anda/dasuu) AS daritu FROM baseball) a

WHERE daritu < 0.3;

ですね。

副問い合わせのテーブルに何か名前(ここではa)をつけないとエラーになりますね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ