2013-03-03 28 views
1

該數據庫僅用於合併兩個包含位置和其他緯度和經度值的表格。我想要做的是位置連接兩個表,這樣的緯度和經度值1通過全文搜索加入兩個表

表1加入到表:

Title:    Location:       Latitude:  Longitude 
pizza shop   london, chelsea, el13 4hr   Null   Null 
Phone Shop   Manchester - Derby     Null   Null 
Computer Repair  Birmingham (b70)     Null   Null 


Table 2: 

Location    Latitude:   Longitude: 
London    53.6658   0.25533 
birmingham   54.3665   0.89336 
manchester   66.3368   0.25836 

表1的位置列在某些情況下包含數據使用逗號破折號或多於一個位置,因此我選擇使用全文匹配先前匹配的內容並顯示經度和緯度值。

爲表1最終結果應該是:

Title:    Location:       Latitude:  Longitude 
pizza shop   London        53.6658   0.25533 
Phone Shop   manchester       66.3368   0.25836 
Computer Repair  birmingham       54.3665   0.89336 

感謝本您的幫助。

回答

1

你可以找這個

select t1.Title , SUBSTRING_INDEX(t1.Location, ' ', 1)as Location , t2.Latitude , t2.Longitude 
    from Table1 t1 
    inner join 
    Table2 t2 
    on SUBSTRING_INDEX(t1.Location, ' ', 1) = t2.Location 

OUTPUT:

TITLE    LOCATION  LATITUDE  LONGITUDE 
pizza shop   london   53.6658  0.25533 
Computer Repair  Birmingham  54.3665  0.89336 
Phone Shop   Manchester  66.3368  0.25836 

DEMO SQLFIDDLE HERE

UPDATE statment應該是這樣的

update Table1 t1 
     inner join Table2 t2 
     on SUBSTRING_INDEX(t1.Location, ' ', 1) = t2.Location 
    SET t1.Latitude = t2.Latitude , 
     t1.Longitude = t2.Longitude 

DEMO SQLFIDDLE

+0

這工作表示感謝,但我如何做更新而不是選擇? – 2013-03-03 18:20:32

+0

在這裏確定更新的聲明,希望它可以幫助你 – 2013-03-03 18:42:14

+0

謝謝我剛剛測試了13,000行,只有8000匹配。一些沒有匹配的行: Peterborough,Cambridgeshire - (兩者都列在表2中) Old Hall Industrial Estate,Wirral,CH62 3QX - (Wirral列於表2) – 2013-03-03 18:51:28

0
select t1.title, t2.location, t2.latitude, t2.longitude 
from table1 t1, table2 t2 
where t1.location ilike concat('%', t2.location, '%'); 
+0

對不起,我的數據集非常慢。 – 2013-03-03 18:53:16

+0

當然是因爲DB架構設計。 – clapas 2013-03-04 13:16:52