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

何度か変更しようとしましたが、このエラー メッセージが消えませんでした。これを解決する方法について何か考えはありますか?

4

3 に答える 3

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

どちらのテーブルにもあいまいさの原因となる ID が含まれているため、どのテーブルIDから来たのかを指定する必要があります。またはnode and parent_node.IDparent.ID

于 2013-05-20T08:00:08.680 に答える
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
于 2013-05-20T08:00:53.553 に答える
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)。

于 2013-05-20T07:59:59.277 に答える