簡體   English   中英

如何編寫SQL查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM