2016-10-30 1 views
0

EDIT: Ich habe die anderen Fragen überprüft, aber keine Verwendung dieser FormelAbstand zwischen zwei Punkten in MySQL funktioniert nicht?

Ich habe Reihen mit 2-Werte (x, y). Ich habe auch einen anderen Punkt, der das Zentrum eines Kreises mit einem bestimmten Radius ist. Ich möchte überprüfen, ob der Abstand zwischen diesem Punkt und den Punktkoordinaten meiner Zeilen kleiner ist als der Radius. Ich versuche, den Abstand zwischen zwei Punkten Formel anzuwenden, um den Abstand zwischen dem Mittelpunkt zu berechnen und die Punkt Zeilen und entscheiden, ob die Zeilenposition innerhalb des Radius des Kreises (< Radius):

var query = "SELECT * FROM table WHERE SQRT((POWER("+x+",2)-POWER(location_x,2))+(POWER("+y+",2)-POWER(location_y,2))) < " + radius; 

Für Aus irgendeinem Grund funktioniert dies nicht und es werden keine Zeilen zurückgegeben, obwohl die Punktkoordinaten der Zeilen geändert wurden. Irgendeine Idee?

Koordinaten in der Formel haben möglicherweise einen negativen Wert. In unserem Testsample tun sie das.

Antwort

3

Ich bin mir ziemlich sicher, dass Ihre Cartesian distance formula nicht korrekt ist.

Die Formel, die Sie brauchen, ist:

sqrt((x - location_x)^2 + (y - location_y)^2) 

Diese in SQL übersetzt etwa so:

SELECT * 
    FROM table 
    WHERE SQRT( (POWER("+ x + "-location_x,2)) 
       +(POWER("+ y + "-location_y,2)) 
      ) < " + radius 
Verwandte Themen