表位置如何使用權正確加入
loc_id loc_name hier2 hier3 hier4 hier5 hier6 hier7 hier8 hier9
152675 Castelli 105 109 0 319 14356 152673 152675 0
14356 Rome 105 109 0 319 14356 0 0 0
...
表Lacations參考
oid name loc_id
12 Demo Villa 152675
...
現在我試着輸入字符串「種姓」找一些條目的用戶搜索:
SELECT geo.loc_id, geo.loc_name AS name
FROM locations AS geo
LEFT JOIN locations AS geoh3 ON geo.hier3 = geoh3.loc_id
LEFT JOIN locations AS geoh4 ON geo.hier4 = geoh4.loc_id
LEFT JOIN locations AS geoh8 ON geo.hier8 = geoh8.loc_id
WHERE geo.loc_name LIKE 'caste%'
GROUP BY geo.loc_name
This works。我得到loc_id 152675
現在我只希望得到那些我們在對象entrys項所以我加入了參考表:
SELECT geo.loc_id, geo.loc_name AS name
FROM locations AS geo
LEFT JOIN locations AS geoh3 ON geo.hier3 = geoh3.loc_id
LEFT JOIN locations AS geoh4 ON geo.hier4 = geoh4.loc_id
LEFT JOIN locations AS geoh8 ON geo.hier8 = geoh8.loc_id
RIGHT JOIN locations_xref AS gx ON geo.loc_id = gx.loc_id
WHERE geo.loc_name LIKE 'caste%'
GROUP BY geo.loc_name
這工作。我再次使用loc_id 152675獲取位置條目,因爲它們是參考。
問題
現在的 「羅馬」 的用戶搜索。我沒有得到任何條目,因爲沒有對象直接參考城市「羅馬」。現有的對象被引用到羅馬的一個區域。
正如您所看到的,分區和城市條目具有層次結構ID,可用於識別正確的結構。我只是不能將它與參考表一起使用,所以我只能得到那些位於「羅馬」或羅馬一部分區域的物體。
任何幫助,非常感謝!
對不起,如果這是一個愚蠢的問題,但爲什麼同樣的'loc_id'中Location Location表中的'name'與Locations中的'loc_name'不同?他們實際上應該是相同的還是完全正確的,他們是不同的?基本上,我只是不確定我瞭解參考表的用途。 –
參考表中的「名稱」字段是指房地產對象的名稱。所以它與地理位置無關。 – Mike
'hier2''' hier9'列提出了一個次優解規格化的表格,使您的查詢變得複雜和緩慢。 –