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

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

问题描述:

got a select within a select statement and I'm not sure why the result is ambiguous!

my (php) function:

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;
        }

    }

I specified which ID in the second select and I still get the error. (I researched, came across PHP MySQL - Column 'id' in IN/ALL/ANY subquery is ambiguous amended my second select so it specifies which ID to read and same error)

Any help given would be much appreciated :D

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

my(php)函数: p>

  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事件AS E 
 ON EC.EventId = E.EventId 
 WHERE category_id IN 
 
(
 SELECT EC.category_id FROM event_in_categories 
 WHERE EventId =:EventId 
)\  n 
 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); 
} 
返回$  CategoryArray; 
} 
 
} 
  code>  pre> 
 
 

我指定了哪一个 D在第二个选择中,我仍然得到错误。 (我研究过,遇到过 PHP MySQL - 专栏 IN / ALL / ANY子查询中的'id'是不明确的修改了我的第二个选择,因此它指定要读取的ID和相同的错误) p>

任何给出的帮助都将非常感激: D p> div>

You have to add the alias from wich column you id should be:

Please change:

WHERE category_id IN

TO

WHERE C.category_id IN

in subquery

SELECT category_id FROM event_in_categories