誰かが私が正しく何をしていないのか教えてください。ここでは実行したいクエリですが、コマンドを実行すると何も起こりません。私はSQLに慣れているので、もしあれば、間違いを赦してください。結合でSQLサブクエリを実行できない
SELECT t.*,
COUNT(DISTINCT t.subjects) AS subjectenrollment,
u.urefnumber,
u.uresidence
FROM
(
SELECT r.*,
@curRank := IF(@prevRank = finalscore, @curRank, @incRank) AS position,
@incRank := @incRank + 1,
@prevRank = finalscore
FROM studentsreports r,
(
SELECT @curRank := 0,
@prevRank = NULL,
@incRank := 1
) c
ORDER BY finalscore ASC
) t LEFT JOIN studentstbl u ON t.studref = u.urefnumber
WHERE t.author = :staff
AND t.studentname = :student
AND t.academicyr = :year
AND t.academicterm = :term
AND t.program = :program
AND t.classes = :level
AND t.subjects = :subject;
それがコードからわかるように、私は学生のレコードをフェッチしようとすると、各被験者における位置のための列だけでなく、各教科を提供する学生の数が含まれています。さらに、私はそれぞれの学生の居住地を別のテーブルにも含めたいと思います。
ある時点で、累積生スコア、つまり各被験者で得られたすべてのマークの合計を追加したいと思っていますが、それを可能にする方法もわかりません。友人は既に別のクエリでそれを達成することを示唆していますが、残念ながら、私はそれを得ることができます。 ご協力いただき、誠にありがとうございます。前もって感謝します!
(バインドさのparams付き)、あなたは真剣ですMySQLが非標準的な 'GROUP BY'の実装を誤ってしまいます。 'COUNT()'は集約関数です。これを読む。 https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.htmlまた、すべての '@ランク'のものを使い始める前に、情報の一部を正しく取得するようにしてください。トリッキーで非標準です。 MySQLの宣言型モデルの上に手続き型モデルを強制して、奇妙な方法で実行します。 –
コロンプレフィックス付きのバインドされたパラメータがあるので、PHPなどのコードでこのクエリを実行していますか?これらのパラメータのいずれかの値がともに結果を返さないか、またはクエリがキャッチしていないエラー/例外をスローします。 – Parfait