2015-12-02 92 views
-2

我有一個數據庫表,用下面的數據與親子樹層次SQL查詢

Id Level parentId Name 
1 1  0  ĐẤT NÔNG NGHIỆP 
2 1  0  ĐẤT PHI NÔNG NGHIỆP 
3 1  0  ĐẤT CHƯA SỬ DỤNG 
4 2  1  Đất sản xuất nông nghiệp 
5 2  1  Đất lâm nghiệp 
6 2  1  Đất nuôi trồng thủy sản 
7 2  1  Đất nông nghiệp khác 
8 2  2  Đất ở (nông thôn/đô thị) 
9 2  2  Đất chuyên dùng 
10 2  2  Đất sông, ngòi, kênh, rạch, suối và mặt nước chuyên dùng 
11 2  2  Đất phi NN khác 
12 2  3  Đất chưa xác định mục đích sử dụng 
... 

我想寫一個查詢獲取數據,如下列:

enter image description here

由於你看,我有6個關卡。我想獲得像上面的序列的所有數據,但所有的數據都是相同的列。 我試過搜索並找到了一個解決方案:[Parent/Child hierarchy tree view 但我很抱歉,因爲我不明白這一點。 我試圖改變到:

WITH relation(Id, IdCha, TenMucDichSuDung, [level], [orderSequence]) 
AS 
(
    SELECT Id, 
      IdCha, 
      TenMucDichSuDung, 
      0, 
      CAST(Id AS VARCHAR(20)) 
    FROM NhomMucDichSuDungDat 
    WHERE IdCha = 0 
    UNION ALL 
    SELECT p.Id, 
      p.IdCha, 
      r.[level] + 1, 
      CAST(
       r.orderSequence + '_' + CAST(p.Id AS VARCHAR) AS VARCHAR(20) 
      ) 
    FROM NhomMucDichSuDungDat p 
      INNER JOIN relation r 
       ON p.IdCha = r.Id 
) 

SELECT RIGHT('----------', ([level] * 3)) + TenMucDichSuDung 
FROM relation 
ORDER BY 
     orderSequence 

,但我得到了一個錯誤:

所有查詢使用UNION合併,交叉或EXCEPT運算符必須 在其目標列表中的相同數目的表達式。

大家能幫幫我嗎?

+0

請格式化您的文章,以便它是可讀的。 – CPMunich

+0

當您比較兩個聯合查詢的SELECT列表中的列數時,您會看到什麼? – CPMunich

+1

我得到一個錯誤,沒什麼可看的 –

回答

0

當我計算聯合查詢的列數時,我看到第一個查詢返回5列,第二個4列。這是不允許的。聯合查詢必須具有相同數量的列,並且數據類型也必須兼容。

請參見:msdn.microsoft.com/de-de/library/ms180026(v=sql.110).aspx

+1

非常感謝。我將回顧sql查詢 –

+1

非常感謝@CPMunich,我看到了我的查詢,發現了這個問題。 這就是原因,我錯過了一個領域。 –