MYSQL Funktion gibt flasches ERgebnis, PHP funktioniert

MySQL, PostgreSQL, SQLite
mcxm
Posts: 14
Joined: 2009-09-10 11:24

MYSQL Funktion gibt flasches ERgebnis, PHP funktioniert

Post by mcxm » 2010-11-12 17:16

Hallo,

ich benutze eine PHP Funktion um die Entfernung von 2 Orten zu ermitteln:

Dazu nehme ich jeweils die (Längen- und Breitengrade) der Orte:


Code: Select all

$x1 = '7.6025390625';// Longitude
$y1 = '50.273333333332';// Latitude
$x2 = '7.6';// Longitude
$y2 = '50.4167';// Latitude


Folgende Funktion errechnet die Entfernung:

Code: Select all

$distance = acos(sin($y2=deg2rad($y2)) * sin($y1=deg2rad($y1))+cos($y2) * cos($y1) * cos(deg2rad($x2) - deg2rad($x1))) * (6380);


Das Ergebnis stimmt: $distance = 16.090628132792 km


Jetzt möchte ich das ganze gerne als MYSQL Abfrage nutzen, die später auch anstelle der konstanten werte entsprechend auf DB Felder zugreift:

Das ganze umgeschrieben auf MySQL (zum Test Variablen durch Werte ersetzt):

Code: Select all

SELECT acos(sin(50.4167=radians(50.4167)) * sin(50.273333333332=radians(50.273333333332))+cos(50.4167) * cos(50.273333333332) * cos(radians(7.6) - radians(7.628333333332))) * (6380) AS Entfernung 


Jetzt bekomme ich einen Rückgabewert von 966.0624898509

---------
Keine Ahnung was ich da falsch mache, eine Syntaxfehlermeldung kommt auch nicht. Wahrscheinlich eine Kleinigkeit aber ich bin mittlerweile betriebsblind...

Kann mir jemand sagen wie die SQL Funktion richtig formuliert lauten muss ?

Vielen Dank.

Gruß

Markus

Roger Wilco
Administrator
Administrator
Posts: 5924
Joined: 2004-05-23 12:53

Re: MYSQL Funktion gibt flasches ERgebnis, PHP funktioniert

Post by Roger Wilco » 2010-11-12 17:33

mcxm wrote:

Code: Select all

50.4167=radians(50.4167)

Das Resultat dieses Ausdrucks ist immer 0. Das willst du sicherlich nicht.

mcxm
Posts: 14
Joined: 2009-09-10 11:24

Re: MYSQL Funktion gibt flasches ERgebnis, PHP funktioniert

Post by mcxm » 2010-11-12 17:55

Hallo,

vielen Dank für die Tipps, ich ahbe bisher leider noch keine Stored Procedures genutzt.

Könntest du mir anhand von diesem Beispiel eine Erklärung schreiben, wie ich die PHP Funktion (die so ja funktioniert) in MySQL als Stored Procedure in Kombination mit einem Statement anlegen und aufrufen kann ?

Vielen Dank.

Markus