2011-10-25 12 views
0

次のクエリは、MySQLでnullを返します。私はcos、acosのようなものすべてをチェックします。しかし、このクエリはNULLを返しています。親切に私を助けてください。SQLクエリの問題:MySQL

http://en.wikipedia.org/wiki/Inverse_trigonometric_function

だから: 高度と緯度がここで分かるよう

-1 <= x <= 1 

場合

select 
acos(sin(74.338372290294) * sin(altitude) + 
     cos(74.338372290294) * cos(altitude) * 
     cos(latitude) - (31.552278760192)) as omg 
from shk_resturants 
+1

私は高度よりもそこに多くので経度を期待しているだろう。ほとんどの論理的な答えは、eiterh高度がnullまたは緯度がnullであることです。これらの値を別々の列として選択すると、その式にどのような実際の値を入れているのかわかり、 – Eddy

答えて

2

テーブルの値(緯度または高度)がNULLの場合、結果もNULLになることがあります。機能を使用するようにしてください。

COALESCE(value, ...) 

select 
    acos(sin(74.338372290294) * sin(COALESCE(altitude, 0)) + 
    cos(74.338372290294) * cos(COALESCE(altitude, 0)) * 
    cos(COALESCE(latitude, 0)) - (31.552278760192)) as omg 
from shk_resturants 

これはNULL値を持つ列に対して0を返します。

参照:MySQL Comparsion-Operatorsと:MySQL Math-Functions

+0

を再現しようとする可能性があります。このクエリを実行します。まだヌル値を持っています。 –

+0

@Chintoo:列の「高度」と「経度」はどのようなタイプですか?値が< -1 and > +1のacos()もnull値を返すことに注意してください。 – MJSt

0

ACOS(X)の場所の地理位置のみ有効ですあなたはかっこを間違えていると思っています。

cos(latitude - (31.552278760192)) -- or 
cos(latitude) - cos(31.552278760192) 

最後に何かしたかったかもしれません...?私の三角法はあまりにも錆びているので教えてもらえません。