我有一个在父子关系中有位置ID的表。它基本上是一个层次结构,如:
State
-County
--City
该表使用以下列映射层次结构
parentID
childID
type
如果我想让某个地点的所有子位置都很简单,那就像:
SELECT childID FROM locations_table WHERE parentID = 1234 AND type = 'county'
但是,如果我需要跳过一个孩子级别(例如跳过县级别并仅包括特定州的城市),我无法弄清楚哪种SQL最适合这样做。
基本上,我试图让孩子的孩子为特定的parentID,但无法弄清楚如何在单个SQL语句中获得它。
答案 0 :(得分:0)
使用自我加入
SELECT childID
FROM locations_table T1
JOIN locations_table T2 ON T1.parentid = T2.childid
WHERE T2.parentID = 1234 AND T1.type = 'county'
答案 1 :(得分:0)
SELECT city.childID FROM
locations_table INNER JOIN
locations_table AS county ON locations_table.childID = county.parentID
INNER JOIN
locations_table AS city ON county.childID = city.parentID
where city.type='city' and locations_table.parentid=1234