2012-02-21 88 views
0

嗨,我有這樣的表結構。sql查詢從一個主表和兩個子表中獲取名稱和desc。

**geoinfo** 
id 
name 
desc 

我有表

**zip_to_city** 
id, 
zip_id fk geoinfo 
city_id fk geoinfo 

比我也有

**zip_to_state** 
id 
zip_id fk geoinfo 
state_id fk geoinfo 

我想查詢,以便我能夠得到各拉鍊與相應的城市和狀態。我不想要這個id,我想要這個名字。 geoinfo是包含每個geoinfo的名稱和描述的主表。

什麼是最好的查詢來做到這一點?

+0

表格是如何相互關聯的? – 2012-02-21 00:31:36

+0

沒有足夠的關於表格如何相關的信息。例如,什麼是geoinfo? – Diego 2012-02-22 15:13:49

回答

0
SELECT city_geo.geography_name as city,state_geo.geography_name as state, zip_geo.geography_name as postalCode 
FROM zip_to_city zc, zip_to_state zs, 
geoinfo city_geo, geoinfo state_geo, geoinfo zip_geo 
where zc.city_id = city_geo.id 
AND state_geo.id= zs.state_id 
AND zip_geo.id = zc.zip_id 
AND zip_geo.id = zs.zip_id 
AND zip_geo.name = ? 

這對我的作品,並得到我想要的東西。

0

我想,如果我理解正確的表格:

SELECT zip_to_city.city_id,zip_to_state.state_id FROM geoinfo 
INNER JOIN zip_to_city ON geoinfo.id=zip_to_city.id 
INNER JOIN zip_to_state ON geoinfo.id=zip_to_state=id where geoinfo.id='some value' 
+0

OP要求輸入'name',而不是'ID' – 2012-02-21 00:33:29

+0

通過閱讀問題,字段列表應該類似於'zip_geoinfo.name,city_geoinfo.name,state_geoinfo.name'(其中'zip_geoinfo'等等是三個'geoinfo'單獨的'JOIN''的別名)。 – ruakh 2012-02-21 00:34:20

+0

是的,這是真的,但他沒有在表中的名稱,但只有ID,所以也許名稱存儲在geoinfo?所以:zip_to_city.geoinfo – riso 2012-02-21 00:36:32

相關問題