EnumID EnumTypeID EnumName EnumParentID
1 1 India 0
2 2 Gujarat 1
3 3 Ahmedabad 2
4 3 Bhavnagar 2
5 3 Botad 2
6 3 Rajkot 2
7 1 Australia 0
8 2 abc 7
9 3 adilade 8
Here EnumTypeID 1 indicate "Country"
2 indicate "State"
3 indicate "City"
以上是我的数据库,我希望得到如下结果
EnumID Country State City
3 India Gujarat Ahmedabad
4 India Gujarat Bhavnagar
5 India Gujarat Botad
6 India Gujarat Rajkot
9 Australia abc adilade
答案 0 :(得分:2)
选择您想要的所有字段并按城市排序作为ASC或DESC的升序或降序记录
Select EnumID,Country,State,City From TableName Order by City Asc
(发货订单) 从TableName按城市描述选择EnumID,国家,州,城市 (降序)
答案 1 :(得分:2)
您必须使用三个级别的自连接:
SELECT t3.EnumID AS EnumID, t1.EnumName AS Country, t2.EnumName AS State, t3.EnumName AS City
FROM table t1 INNER JOIN table t2 ON (t1.EnumID=t2.EnumParentID)
INNER JOIN table t3 ON (t2.EnumID=t3.EnumParentID)
WHERE t1.EnumTypeID=1 AND t2.EnumTypeID=2 AND t3.EnumTypeID=3
现在,您知道表格中可能包含不一致的信息。假设第二级始终是EnumTypeID = 2,第三级始终是EnumTypeID = 3。您可能会错误地拥有父ID但EnumTypeID = 1的数据(实际上是国家/地区内的国家/地区)等。
如果您具有分层数据(即具有父链接的数据),该数据也指定了记录所在的层,则父链接和层编号可能不一致。换句话说,你总是需要确保parent.layer = child.layer - 如果child.parent = parent则为1。确保您的代码执行此检查。