[英]How to write Sql query
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
選擇您要按字段排序的所有字段,並按城市升序或降序按ASC或DESC排序
Select EnumID,Country,State,City From TableName Order by City Asc
(升序)從TableName中選擇EnumID,Country,State,City從城市降序(降序)
您必須使用三個級別的自聯接:
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。 確保您的代碼對此進行檢查。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.