linux user group brescia

immagine del castello

Archivio della mailing list

[LugBS] [OT] MySQL... help me please!

Diego Monselice info a diegomonselice.it
Mer 23 Feb 2011 15:09:59 UTC
ciao a tutti... perdonatemi per l'OT! Ho un altro problema con MySQL.
Sistemato quello precedente, ora si rifiuta di validarmi una query e non
ne capisco l'arcano motivo.

La query originale che ho trovato online dalla quale ho preso spunto era
questa:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SELECT *,
(
	(
		(acos(sin((".$latitude."*pi()/180))
		* sin((`Latitude`*pi()/180))
		+ cos((".$latitude."*pi()/180))
		* cos((`Latitude`*pi()/180))
		* cos(((".$longitude."-`Longitude`)*pi()/180)))
		)*180/pi()
	)*60*1.1515*1.609344
) as distance FROM `MyTable`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

e per le mie esigenze ho dovuto trasformarla in questo modo:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SELECT id, nome, descrizione,
(
	(
		(acos(sin(($lat * pi()/180))
			* sin((latit * pi()/180))
			+ cos(($lat * pi()/180))
			* cos((latit * pi()/180))
			* cos((($long- longit) * pi()/180))
			)
		)* 180/pi()
	) * 60 * 1,1515*1,609344
) AS distanza
FROM punto
ORDER BY distanza
LIMIT 0,10
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

so che è un po' complessa e contorta ma mi permetterebbe di ricavare la
distanza tra 2 coordinate geografiche in Km (a detta di chi ha
pubblicato tale query. Non mi pare di aver fatto errori nell'adattarla.

Per completezza vi dico che le variabili $lat e $long sono 2 stringhe
contenenti valori float che hanno la virgola come simbolo per i decimali
e non il punto, xchè ho visto che MySQL li vuole così.

Sta di fatto che mi torna questo errore: #1241 - Operand should contain
1 column(s)

Secondo voi quale può essere il problema? Ho fatto qualche errore?

Grazie a tutti

-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Diego Monselice

MSN: diegomonselice a hotmail.com
Yahoo! messenger: diegomonselice
Skype: diegomonselice
Cell. Tim: (+39) 339 25 68 172
Cell. Vodafone: (+39) 347 99 39 028
Web: http://www.diegomonselice.it
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~




Maggiori informazioni sulla lista Lug