PDOException:SQLSTATE [23000]:违反完整性约束:1052 IN/ALL/ANY 子查询中的列 'category_id' 不明确
PDOException: SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'category_id' in IN/ALL/ANY subquery is ambiguous
在 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;
}
}
我在第二个 select 中指定了哪个 ID,但仍然出现错误。 (我研究了一下,发现 PHP MySQL - Column 'id' in IN/ALL/ANY subquery is ambiguous 修改了我的第二个 select 所以它指定了要读取的 ID 和相同的错误)
如有任何帮助,我们将不胜感激:D
您必须添加您的 ID 所在列的别名:
请更改:
WHERE category_id IN
到
WHERE C.category_id IN
在子查询中
SELECT category_id FROM event_in_categories
在 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;
}
}
我在第二个 select 中指定了哪个 ID,但仍然出现错误。 (我研究了一下,发现 PHP MySQL - Column 'id' in IN/ALL/ANY subquery is ambiguous 修改了我的第二个 select 所以它指定了要读取的 ID 和相同的错误)
如有任何帮助,我们将不胜感激:D
您必须添加您的 ID 所在列的别名:
请更改:
WHERE category_id IN
到
WHERE C.category_id IN
在子查询中
SELECT category_id FROM event_in_categories