ammarsoftware Ответов: 2

Печать листа отметок учащихся по всем предметам в mysql на языке C#


Привет У меня есть проблемы с отображением оценок студентов в одной таблице
Данные таблицы выглядят следующим образом:
CREATE TABLE `tb_marks` (
  `id` int(11) NOT NULL,
  `id_subject` int(11) NOT NULL,
  `code_student` int(11) NOT NULL,
  `round` varchar(50) NOT NULL,
  `mark` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
------------------
INSERT INTO `tb_marks` (`id`, `id_subject`, `code_student`, `round`, `mark`) VALUES
(3, 1, 2, 'first', '45'),
(2, 1, 3, 'first', '45'),
(4, 2, 2, 'first', '46'),
(5, 3, 2, 'first', '0'),
(6, 4, 2, 'first', '84'),
(7, 5, 2, 'first', '77'),
(8, 6, 2, 'first', '65');
---------------------------------
CREATE TABLE `tb_student_old` (
  `id` int(11) NOT NULL,
  `name` varchar(100) NOT NULL,
  `school` varchar(50) NOT NULL,
  `code` int(11) NOT NULL,
  `age` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-------------------
INSERT INTO `tb_student_old` (`id`, `name`, `school`, `code`, `age`) VALUES
(1, 'ahmad', 'school', 0, NULL),
(2, 'noor', 'school', 0, NULL),
(3, 'salim', 'school', 0, NULL),
(4, 'emad', 'school', 0, NULL);
------------------------------------------
CREATE TABLE `tb_subject` (
  `id` int(11) NOT NULL,
  `name` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
------------------
INSERT INTO `tb_subject` (`id`, `name`) VALUES
(1, 'islamic'),
(2, 'arabic'),
(3, 'english'),
(4, 'math'),
(5, 'science'),
(6, 'social'),
(7, 'geographically'),
(8, 'date'),
(9, 'national');

Мне нужен запрос или программирование, которое дает мне таблицу следующим образом:
SNo Student Name   islamic|arabic|english|math|science|social|geographic|Total
      1    ahmad		88	88	88	88   88	    88	    88	      8888


Что я уже пробовал:

SELECT `tb_marks`.`id` , `tb_marks`.`round`, `tb_marks`.`mark` , `tb_subject`.`name` , `tb_student_old`.`name`, `tb_student_old`.`school` FROM `tb_marks` INNER JOIN `tb_subject` ON `tb_subject`.`id` = `id_subject` INNER JOIN `tb_student_old` ON `tb_student_old`.`id` = `code_student` WHERE code_student='2';
But the result was not right:

2 Ответов

Рейтинг:
12

Richard MacCutchan

Вам нужен оператор SELECT; см. MySQL :: MySQL 8.0 справочное руководство :: 13.2.10 выбор синтаксиса[^]


ammarsoftware

я использовал это утверждение :
Выберите " tb_marks`.`идентификатор` , `tb_marks`.`круглый`, `tb_marks`.`Марка` , `tb_subject`.`наименование` , `tb_student_old`.`наименование`, `tb_student_old`.`школа` с `tb_marks` внутреннее соединение `tb_subject` на `tb_subject`.`идентификатор` = `id_subject` внутреннее соединение `tb_student_old` на `tb_student_old`.`ИД` = `code_student где code_student='2';
Но результат был не тот:

Рейтинг:
1

MadMyche

ААА, сводный стол.

Для MySql вы бы использовали Group_Concat() инструкция, как это сделать. В следующей статье демонстрируется эта функциональность наряду с другими версиями СУБД
http://www.artfulsoftware.com/infotree/qrytip.php?id=78[^]


ammarsoftware

Спасибо
Вы уже пытались использовать это предложение
Но это не делает трюк, потому что он дает случайные ответы:

---------------------
выберите.code_student, б.имя, group_concat(а.метка-разделитель ' ') как student_enrollment от tb_marks а tb_student_old Б, где.code_student = б.идентификатор группы.code_student, б.название

MadMyche

Данные, которые вы вставляете в таблицы, не соответствуют желаемым результатам; ваша вставка tb_marks не содержит ни данных для Ahmad, ни каких-либо отметок 88.

ammarsoftware

вы можете мне помочь в любом деле?