2016-01-28 41 views
-1

我現在坐在一個問題上。我已經導入了一個開源的地理位置數據庫。如何在只知道一個值的情況下從兩個表中檢索具有相同ID的多行

我有兩個表我想要訪問。

表A:
ID       | lat | lon
200 | 48 | 12

表B:
ID       |類型|價值
200 |城市      |慕尼黑
200 |狀態|巴伐利亞

現在我想有這樣的結果:
ID       | lat | lon | TypeValue | TypeValue
200 | 48 | 12     |慕尼黑                |巴伐利亞州

這是可能的只有一個查詢?

編輯:我知道的唯一價值就是 「慕尼黑」

EDIT2:這是我到目前爲止有:

SELECT 
geodb_coordinates.lat AS lat, 
geodb_coordinates.lon AS lon, 
geodb_textdata.text_val AS text 
FROM 
geodb_coordinates, 
geodb_textdata 
WHERE 
geodb_coordinates.loc_id = geodb_textdata.loc_id AND 
geodb_textdata.text_val LIKE :location 
GROUP BY geodb_textdata.text_val 
ORDER BY LENGTH(geodb_textdata.text_val) 
LIMIT 3 
+0

是的,它可以與自我加入。你試過什麼了?表B中具有相同ID 2的記錄數量是否可以更多,例如城市 - >州 - >國家 - >大陸? – Shadow

+0

你不能有兩個同名的列... –

+0

@Shadow我現在得到的是,我可以有「ID | lat | TypeValue」。沒有成功獲取其他TypeValue。是的。表B可以具有更多具有相同ID的行。 –

回答

2

試着這麼做:

Select A.ID,A.Iat, A.Ion, B.Value as TypeValue1, C.Value as TypeValue2 
from 
A inner join B on A.ID=B.ID and B.Type='City' 
Inner join B as C on B.ID=C.ID and C.Type='State' 
+0

應該是C.Type ='State'如果有超過2條記錄(參見OP的評論),那麼這個查詢是不夠的。 – Shadow

+0

@Shadow,是的,你是對的。 –

1

嘗試像

SELECT b1.ID, a.lat, a.lon, b1.Value, b2.Value 
FROM table_b as b1 join table_a as a on a.ID=b1.ID, table_b as b2 
where b1.ID=b2.ID and b1.`Type`='City' and b2.`Type`='State' and b1.Value='Munich'; 

我想每個ID只有一個城市,對吧?

相關問題