Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 数据库查询失败:字段列表中的列“id”不明确_Mysql - Fatal编程技术网

Mysql 数据库查询失败:字段列表中的列“id”不明确

Mysql 数据库查询失败:字段列表中的列“id”不明确,mysql,Mysql,我多次尝试修改它,但此错误消息不会消失。数据库查询失败:字段列表中的“id”列不明确。有没有办法解决这个问题?改变一下: SELECT realestate.id,node.id,node.name from realestate, (SELECT GROUP_CONCAT(parent.name_en ORDER BY parent.lft DESC) AS name,id

我多次尝试修改它,但此错误消息不会消失。数据库查询失败:字段列表中的“id”列不明确。有没有办法解决这个问题?

改变一下:

       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

您需要指定表的别名,因为假设两个表都有一个名为id的列,mysql不知道使用哪个表来获取id列。

更改此选项:

       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


您需要指定表的别名,因为假设两个表都有一个名为id的列,mysql不知道使用哪个表来获取id列。

问题在于子查询

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

您应该指定ID来自哪个表,因为节点和父节点都包含导致歧义的ID。可能是node.ID或parent.ID

问题出在子查询上

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

您应该指定ID来自哪个表,因为节点和父节点都包含导致歧义的ID。它可以是node.ID或parent.ID

这是因为您在串联查询中使用的是ID,所以它不明确,只需更改即可避免错误

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,所以它是不明确的,只需更改即可避免错误

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

+1顺便说一句,sql注释是-not/:+1顺便说一句,sql注释是-not/:+1用于解释+1用于解释提醒我,我们为什么要获取父ID?提醒我,我们为什么要获取父ID?