2016-07-21 50 views
0

私は、UserテーブルがAthleteテーブルに結合されているSQLクエリを作成しようとしています。これに加えて、私はまた、Athlete_Event_RunテーブルとAthlete_Personal_Runテーブルの合計エントリ数をカウントします。私はPHPでこのSQLクエリを実行すると、私はSQLSTATE [21000]エラーが表示されます。MySQLカーディナリティ違反エラー

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); 
:私は、ストアドプロシージャでSQLコードを配置している

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 

、これは、私はそれは次のようになるだろうと思ったものです

ありがとう:)

答えて

1

下部の内側のクエリは意味をなさない。あなたは1を除いて、あまりにも多くの列を返しています。論理ブール値への変換をしようとしています。あなたはそれを完全に混乱させました。

は、それがチャンスを持っているでしょう、それは

and (1) 
and (false) 

に解決することでした。しかし、あなたは列に加えて集約(時間2のサブクエリー)があるので、あなたはそうではありません。彼らの1人でさえ、それはチョークになりました。あなたは二人いました。マニュアルページから

Subquery Errors エラー1241:

You may use a subquery that returns multiple columns, if the purpose is row comparison. In other contexts, the subquery must be a scalar operand.

関連する問題