Я работаю над проектом, в котором мне нужен отчет. Я хочу рассчитывать на этот отчет. В январе 2014 года, какой класс студентов вступил в январе. Стол ученика имеет только номер класса. И таблица таблицы содержит всю информацию.
Группа № 1. месяц и год.
Группа № 2. Класс
Моя таблица STD
+ -------- + ---------- + ----------------- + ----------- ----- + ------------ + | STD_ID | STD_name | Вход | Admission_year | Class_Code | + -------- + ---------- + ----------------- + ----------- ----- + ------------ + | 01 | ABC | Январь | 2017 | 1 | + -------- + ---------- + ----------------- + ----------- ----- + ------------ + | 02 | DEF | Январь | 2017 | 2 | + -------- + ---------- + ----------------- + ----------- ----- + ------------ + | 03 | GHI | Февраль | 2017 | 1 | + -------- + ---------- + ----------------- + ----------- ----- + ------------ +
Мне нужен этот результат
+--------+----------+-----------------+----------------+ | Month | Year | Class | Count_Student | +--------+----------+-----------------+----------------+ |January | 2017 | 01 | 01 | +--------+----------+-----------------+----------------+ |January | 2017 | 02 | 01 | +--------+----------+-----------------+----------------+ |February| 2014 | 01 | 01 | +--------+----------+-----------------+----------------+
Кто-нибудь мне поможет
Вы можете попробовать это решение для своей проблемы:
Структура таблицы:
CREATE TABLE student (
STD_ID MEDIUMINT NOT NULL AUTO_INCREMENT,
STd_name varchar(25),
Admission_Month varchar(25),
Admission_year varchar(25),
Class_Code varchar(25),
std_Status varchar(25),
PRIMARY KEY (STD_ID) ) #ENGINE=MyISAM;
CREATE TABLE CLASS (
Class_Code MEDIUMINT NOT NULL AUTO_INCREMENT,
Class_name varchar(25),
CLass_Courcess varchar(25),
PRIMARY KEY (Class_Code) )
#ENGINE=MyISAM;
INSERT INTO student (STd_name, Admission_Month, Admission_year, Class_Code,std_Status)
VALUES ("ABC","January","2017","1","On"),
("DEF","January","2017","1","On"),
("GHI","February","2017","2","Off"),
("ADFDBC","MARCH","2017","1","On");
INSERT INTO CLASS (Class_name,CLass_Courcess)
VALUES("DIV A","MBA"),("DIV B","MTECH")
Запрос:
SELECT Admission_Month as Month, Admission_year as Year, Class_name as Class,
(SELECT COUNT(s_on.STD_ID) FROM student as s_on WHERE s_on.Admission_Month = student.Admission_Month AND s_on.Admission_year = student.Admission_year AND s_on.Class_Code = student.Class_Code AND s_on.std_Status ="On") as status_on,
(SELECT COUNT(s_on.STD_ID) FROM student as s_on WHERE s_on.Admission_Month = student.Admission_Month AND s_on.Admission_year = student.Admission_year AND s_on.Class_Code = student.Class_Code AND s_on.std_Status ="Off") as status_off
FROM student
LEFT JOIN class ON class.Class_Code = student.Class_Code
GROUP BY Admission_Month,Admission_year
а также вы можете ссылаться на sqlfiddle
Надеюсь, это поможет.