как создать представление, когда несколько групп, использующих Mysql

0

Я работаю над проектом, в котором мне нужен отчет. Я хочу рассчитывать на этот отчет. В январе 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          | 
+--------+----------+-----------------+----------------+

Кто-нибудь мне поможет

Теги:

1 ответ

0
Лучший ответ

Вы можете попробовать это решение для своей проблемы:

Структура таблицы:

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

Надеюсь, это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню