2012-03-26 13 views
0

Lets sagen, ich habe Tabelle mit dem Namen Platz mit Säulen:chosing Reihe mit kleinster GLength Wert

placeId int not null auto_increment, 
latitude double, 
longitude double, 

Nicht exacly Ganz gleich, welche Spalten sie sind, nur eine Idee.

Nun sagen wir, ich bekomme irgendwie Breiten- und Längengrad eines Punktes, was ich versuche zu erreichen, ist aus der Tabelle Place row auszuwählen, welcher GLength-Wert der kleinste ist.

Es ist einfach, wenn ich so etwas wie dies in mysql:

SET @ls = 'LineString(50.123 23.321,51.567 23.123)'; 
SELECT GLength(GeomFromText(@ls)); 

Aber im Allgemeinen habe ich keine Ahnung, wie könnte ich eine solche Abfrage mit Variablen (bei mysql Ich bin nicht zufrieden) machen jede Hilfe?

Ich würde Reihenfolge von GLength (..) verwenden und Ergebnis auf 1 begrenzen, aber wie kann ich solche Iteration machen?

Mein Ziel Code über Java zu feuern ist und als native SQL-Abfrage

Antwort

0

OK Hibernate, es mit meinem Teamkollegen gemacht, wenn jemand es will, ist hier die select:

SELECT GLength(
    linestringfromwkb(
    LineString(
     GeomFromWKB(Point(j.latitude,j.longitude)) 
    ,GeomFromWKB(Point(51,22))))),j.latitude,j.longitude FROM my_database.place_table j 
order by 
GLength(
    linestringfromwkb(
    LineString(
     GeomFromWKB(Point(j.latitude,j.longitude)) 
    ,GeomFromWKB(Point(51,22))))) asc 
limit 1;