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