Есть InnoDB таблица, в которой хранится успеваемость учеников.
Структура таблицы
CREATE TABLE `performance` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pupil_id` int(11) NOT NULL,
`date` date NOT NULL,
`read` tinyint(4) NOT NULL,
`write` tinyint(4) NOT NULL,
`listening` tinyint(4) NOT NULL,
`translate` tinyint(4) NOT NULL,
`late` tinyint(1) NOT NULL,
`nothw` tinyint(1) NOT NULL,
`skip` tinyint(1) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Там где оценивание не проводилось ставится 0. В последствии эти данные используются для построение графика успеваемости. Естественно что брать нулевое значение для отображения на графике не нужно. График строится в соответствии с значениями, которые хранятся в полях read, write, listening, translate — по оси У. По оси Х — отображается дата.
Чтобы получить значения успеваемости по каждому виду деятельности без учета нулей, придется делать SELECT для каждого столбца. Запрос получается такого вида:
SELECT performance.date, performance.read FROM performance WHERE performance.read <> 0;
Такие же запросы для остальных столбцов.
Пример таблицы, столбцы в порядке немного не совпадают:
id |
date |
pup_id |
read |
write |
listening |
translate |
skip |
late |
nothw |
1 |
01.02.2013 |
7 |
10 |
10 |
0 |
4 |
0 |
0 |
0 |
2 |
02.02.2013 |
7 |
8 |
11 |
4 |
4 |
0 |
0 |
0 |
3 |
03.02.2013 |
7 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
Как исправить структуру, чтобы можно было одноим запросом получить данные?