mysql - Failure To Execute SQL Subquery With Join -
please can tell me i'm not doing right. here query want execute, nothing happens when run command. i'm new sql pardon mistake, if any.
select t.*, count(distinct t.subjects) subjectenrollment, u.urefnumber, u.uresidence ( select r.*, @currank := if( @prevrank = finalscore, @currank, @incrank ) position, @incrank := @incrank + 1, @prevrank = finalscore studentsreports r, ( select @currank := 0, @prevrank = null, @incrank := 1 ) c order finalscore asc ) t left join studentstbl u on t.studref = u.urefnumber t.author = :staff , t.studentname = :student , t.academicyr = :year , t.academicterm = :term , t.program = :program , t.classes = :level , t.subjects = :subject;
as can seen code, i'm trying fetch students records, , include column position in each subject, number of students offering each subject. more over, want include each student's residential status, in different table.
at point, want add accumulated raw scores, is, summation of marks obtained in each subject, don't know how make possible. friend has suggestted acheiving in separate queries, unfortunately, well. please, grateful help. in advance!
consider adjustment using derived tables , correlated subqueries without need of @variables. sql statement below handles following needs employed stategy listed alongside:
- column position/rank in each subject - aggregate correlated count subquery @ top level
- number of students offering each subject - aggregate count derived table (inner join clause)
- each student's residential status - group field (from clause)
- summation of marks in each subject - aggregate sum derived table (from clause)
sql (with binded params)
select main.student_number, main.subjects, main.student_residence, main.accum_raw_scores, (select count(*) (select s.studref, s.subjects, sum(s.finalscore) total_score studentsreports s group s.studref, s.subjects) sub sub.subjects = main.subjects , sub.total_score >= main.accum_raw_scores) subject_rank, cnt.subject_student_count (select r.studref student_number, r.subjects, u.uresidence student_residence, sum(r.finalscore) accum_raw_scores studentreports r left join studentstbl u on r.studref = u.urefnumber r.author = :staff , r.studentname = :student , r.academicyr = :year , r.academicterm = :term , r.program = :program , r.classes = :level , r.subjects = :subject group r.studref, r.subjects, u.uresidence) main inner join (select sub.subjects, count(*) subject_student_count studentreports sub group sub.subjects) cnt on cnt.subjects = main.subjects
Comments
Post a Comment