我正在尝试创建一个SQL查询,其中User表与Athlete表连接。除此之外,我还想计算Athlete_Event_Run表和Athlete_Personal_Run表中的总条目数。当我在PHP上运行此SQL查询时,我收到SQLSTATE [21000]错误:
Uncaught exception 'PDOException' with message 'SQLSTATE[21000]: Cardinality violation: 1241 Operand should contain 1 column(s)' in /var/www/html/ibaleka/get_athlete_profile_extended.php:14
我已将SQL代码放在存储过程中,这就是我认为的样子:
SELECT * FROM `User`
LEFT OUTER JOIN Athlete ON Athlete.UserID = `User`.UserID
WHERE `User`.EmailAddress = emailAddress
AND (SELECT Athlete_Event_Run.AthleteID, COUNT(*) AS TotalEventRun FROM Athlete_Event_Run WHERE Athlete_Event_Run.AthleteID = `User`.UserID GROUP BY Athlete_Event_Run.AthleteID)
AND (SELECT Athlete_Personal_Run.AthleteID, COUNT(*) AS TotalPersonalRun FROM Athlete_Personal_Run WHERE Athlete_Personal_Run.AthleteID = `User`.UserID GROUP BY Athlete_Personal_Run.AthleteID);
谢谢:)
答案 0 :(得分:1)
你在底层的内心疑问没有任何意义。你返回的列太多,2而不是1.它试图为你转换为逻辑布尔值,你完全混淆了它。
是否要解决
and (1)
and (false)
它有机会。但你不是,因为你有一个列加上一个聚合(乘以2个子查询)。即使其中一个也会让它窒息。你有两个。
从手册页Subquery Errors 错误1241:
如果有目的,您可以使用返回多个列的子查询 行比较。在其他情况下,子查询必须是标量 操作数。