PDOException:SQLSTATE [23000]:完整性约束违规:1052 IN / ALL / ANY子查询中的列'category_id'不明确

时间:2015-01-09 11:08:51

标签: php mysql

在select语句中有一个select,我不确定为什么结果不明确!

我的(php)功能:

function FunctionName($EventId) {

    $database = new Connection();
    $database = $database->Connect();
    $statement = $database->prepare(" SELECT C.*
        FROM event_categories AS C
        LEFT JOIN event_in_categories as EC
        ON C.category_id = EC.category_id
        LEFT JOIN events AS E
        ON EC.EventId = E.EventId
        WHERE category_id IN

        (
            SELECT EC.category_id FROM event_in_categories
            WHERE EventId = :EventId
        )

        AND category_active = 1 ");

        $statement->execute(array("EventId" => $EventId));
        $Categories = $statement->fetchall(PDO::FETCH_ASSOC);

        if (!empty($Categories)) {
            foreach ($Categories as $Category) {
                $CategoryArray[] = new EventCategory(null, $Category);
            }
            return $CategoryArray;
        }

    }

我在第二个选择中指定了哪个ID,但仍然出现错误。 (我研究过,遇到PHP MySQL - Column 'id' in IN/ALL/ANY subquery is ambiguous修改了我的第二个选择,因此它指定了要读取的ID和相同的错误)

非常感谢任何帮助:D

2 个答案:

答案 0 :(得分:2)

你必须添加你应该是的列的别名:

请更改:

WHERE category_id IN

WHERE C.category_id IN

答案 1 :(得分:0)

子查询中的

SELECT category_id FROM event_in_categories