2011-02-18 8 views
0

私は名前付きの場所の中にテーブルを持つ場所という名前の古いデータベースを持っています。古いテーブルから新しいテーブルへの複雑なMySQLの結合

この表には、id(int、index)、承認(int)、都市(text)、国(text)、見出し(double)、lat(double)、lng(double)の7つの変数があります。

私は複雑さという名前の新しいデータベースを持っています。

新しいデータベースはそれほどのMySQLの空間索引を使用するように起こっている:データベースは、私が新しいテーブルに古いテーブルをコピーする必要が

gsvrawという名前の新しいテーブルを持っている、それがトリッキー取得する場所しかし、これはされていることを 後でポリゴン内を検索することができます。新しいデータベースではlatの代わりにlngという名前の新しい列を追加したいと思います。新しい列を作成するため

例文:

ALTER TABLE gsvraw ADD location POINT NOT NULL; 
CREATE SPATIAL INDEX location ON gsvraw (location); 

これは、位置列に新しい値を挿入するための例示的な文である:

INSERT INTO gsvraw (location) VALUES(GeomFromText('POINT(40 -100)')); 

40及び-100はLATであろうとlng。

アイデア?

私はここでMITで3人の異なる "グル"を1時間ずつ無駄にし、文字通りどこにもいませんでした。

私が稼働しているサーバは大きな問題を引き起こしているので、pythonを使用していて、MySQLdbはありません。

うまくいけば、誰かが私たちよりもスマートで、生のSQL文を助けることができたらと思っています。

私はMAMP proを使用してApache MySQLとPHPを搭載したMacでこれを実行しています。これはいくつかの問題を引き起こすので、実際には動作する唯一のソリューションはストレートPHPとSQLです。 アイデア

ソリューション:

<?php 
$con = mysql_pconnect("localhost","username","password"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db("database1", $con); 


$result = mysql_query("SELECT * FROM database1 WHERE ") 
or die(mysql_error()); 

$con2 = mysql_pconnect("localhost","username","password"); 
if (!$con2) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db("complexity", $con2); 

while($row = mysql_fetch_array($result)) { 

    mysql_query("INSERT INTO table1 (id, approved, city, country, heading, location) VALUES ('".$row['id']."', '".$row['approved']."', '".$row['city']."', '".$row['country']."', '".$row['heading']."', PointFromText('POINT(".$row['lng']." ".$row['lat'].")'))", $con2); 

} 
?> 

答えて

0

あなたはPointFromText機能を試してみましたか?

set location = PointFromText(CONCAT('POINT(',latitude,' ',longitude,')')); 
+0

私はスクリプトを書くことになりましたが、コードを編集する必要があり、単独で間違っていました。 –

関連する問題