Mysql Как добавить несколько предложений Where в одну таблицу

У меня есть этот запрос на моей таблице, и он возвращает таблицу, приведенную ниже

SELECT sub.Subject_Name, count(sa.Attendance) AS Lectures_Attended FROM student_attendance sa
INNER JOIN TeacherSubjects ts on (sa.TeacherSubject_ID = ts.TeacherSubject_ID)
INNER JOIN Subjects sub on(ts.Subject_ID = sub.Subject_ID)
where sa.Student_ID = 1 AND sub.Semester = '8th-Semester' AND sa.Attendance=1
GROUP by sa.TeacherSubject_ID
UNION ALL

SELECT sub.Subject_Name, count(sa.Attendance) AS Total_Lectures FROM student_attendance sa
INNER JOIN TeacherSubjects ts on (sa.TeacherSubject_ID = ts.TeacherSubject_ID)
INNER JOIN Subjects sub on(ts.Subject_ID = sub.Subject_ID)
where sa.Student_ID = 1 AND sub.Semester = '8th-Semester'
GROUP by sa.TeacherSubject_ID

SubjectName LecturesAttended
Php           2
Php           3

Теперь мне не нужен второй ряд, т.е. Php | 3

Мне нужно, чтобы таблица была показана так

SubjectName  LecturesAttended  TotalLectures
Php             2               3

-2

Решение

Вам просто нужно уменьшить ваш запрос до:

SELECT
sub.Subject_Name,
COUNT(IF(sa.Attendance=1,1,NULL)) AS Lectures_Attended,
COUNT(*) Total_Lectures
FROM student_attendance sa INNER JOIN TeacherSubjects ts ON (sa.TeacherSubject_ID = ts.TeacherSubject_ID)
INNER JOIN Subjects sub ON (ts.Subject_ID = sub.Subject_ID)
WHERE sa.Student_ID = 1 AND sub.Semester = '8th-Semester'
GROUP by sa.TeacherSubject_ID;

Увидеть Функция MySQL IF () о том, как функция if работает в MySQL.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector