2013-03-18 2 views
0

suivant, condition préalable.SQL Fonction sqrt

Table est appelée point colonnes sont id start_long start_lat des_lat des_long

Select 
    * 
from 
    point 
WHERE 
    SQRT((71,5x(`start_long`-`des_long`))x(71,5x(`start_long`-`des_long`))+(111,3x(`start_lat`-`des_lat`))x(111,3x(`start_lat`-`des_lat`)))<=10.0 

Je reçois un # 1241 - Opérande doit contenir 1 erreur de colonne (s). Qu'est-ce qui ne va pas?

Je veux obtenir facilement les résultats où la racine carrée (c'est la fonction correcte pour la distance entre deux points) est inférieure à 10 km.

x représente les étoiles de multiplication

Merci de

+0

@Fabian ... que sont les étoiles de multiplication? – MikeTWebb

+0

Les virgules sont-elles supposées être des points décimaux? – GilM

Répondre

1

Vous utilisez des virgules pour certains numéros 71,5 et des points dans d'autres 10.0

Je suppose que vous avez l'intention d'utiliser des périodes . pour vos décimales et les virgules sont interprétées comme des arguments distincts.

1

Vous avez des virgules dans votre fonction SQRT, provoquant votre opérande d'avoir plusieurs colonnes.

+1

Et apparemment, vous ne pouvez pas configurer mysql pour accepter les virgules comme séparateur décimal http://stackoverflow.com/questions/8669212/change-decimal-separator-in-mysql – jmilloy

+0

C'était la réponse simple. ;-) Merci –