0

列を持つ Place という名前のテーブルがあるとしましょう:

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

それらがどの列であるかは正確には関係ありません。アイデアを得るだけです。

ここで、ポイントの緯度と経度を何とか受け取ったとしましょう。私が達成しようとしているのは、GLength 値が最も小さいテーブル Place 行から選択することです。

mysqlで次のようなことをすると簡単です:

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

しかし、一般的に、変数を使用してそのようなクエリを作成する方法がわかりません(私はmysqlが苦手です)。

GLength(..) による順序を使用し、結果を 1 に制限しますが、そのような反復を行うにはどうすればよいですか?

私の目標は、ネイティブSQLクエリとしてJavaとHibernateを介してコードを起動することです

4

1 に答える 1

0

OK、チームメイトと一緒に作りました。誰かがそれを望んでいるなら、ここで選択してください:

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;
于 2012-03-26T15:51:09.507 に答える