2013-05-20 28 views
0
 SELECT realestate.id,node.id,node.name 
       from realestate, 
       (SELECT 
        GROUP_CONCAT(parent.name_en ORDER BY parent.lft DESC) AS name,id 
        FROM 
        address AS node JOIN address AS parent 
        ON node.lft BETWEEN parent.lft AND parent.rgt 
        WHERE node.lft >={$lft} and node.rgt <={$rgt} 
        GROUP BY node.name) as node 
     INNER JOIN users ON id_user = users.id 
     LEFT JOIN pic ON id_realestate = realestate.id 
     WHERE node.id = realestate.address_id 

我試着修改了幾次,此錯誤信息不會消失「數據庫查詢失敗:列‘身份證’在字段列表不明確」。有沒有關於如何解決這個問題的想法?數據庫查詢失敗:列「身份證」在字段列表是不明確的

+0

提醒我,爲什麼我們要抓住父母的id? – Strawberry

回答

2

的問題是在子查詢,

SELECT GROUP_CONCAT(parent.name_en ORDER BY parent.lft DESC) AS name, 
     id -- <<== HERE (change to node.ID or parent.ID) 
FROM address AS node 
     JOIN address AS parent 
      ON node.lft BETWEEN parent.lft AND parent.rg 

你應該在什麼表從何而來,因爲兩個node and parent包含ID引起歧義的ID指定。這可能是node.IDparent.ID

+0

+1解釋 – Stephan

0

更改此:

GROUP_CONCAT(parent.name_en ORDER BY parent.lft DESC) AS name,id 

GROUP_CONCAT(parent.name_en ORDER BY parent.lft DESC) AS name,node.id 

你需要指定表的別名,因爲MySQL不知道有什麼用表來獲得id列(假設兩表格有名爲id的列)。

2

,這是因爲你在你的級聯查詢中使用的ID,所以它的曖昧,只需更改,以避免錯誤

GROUP_CONCAT(parent.name_en ORDER BY parent.lft DESC) AS name,node.id --here you need to specify that is from node 
+1

+1順便說一句,sql評論是' - '不'''':) – Stephan