У меня есть таблица с оценками (1-6) примерно так:
mysql> SELECT two FROM data WHERE date >= '2018-10-23 00:00:00' AND date < '2018-10-23 23:59:59';
+------+
| two |
+------+
| 5 |
| 1 |
| 1 |
| 2 |
| 1 |
| 2 |
| 2 |
| 1 |
| 1 |
+------+
9 rows in set (0.00 sec)
Мне нужно количество экземпляров каждого сорта, например:
mysql> SELECT two, COUNT(1) as count from data lookup where date >= '2018-10-23 00:00:00' AND date < '2018-10-23 23:59:59' GROUP BY two;
+------+-------+
| two | count |
+------+-------+
| 1 | 5 |
| 2 | 3 |
| 5 | 1 |
+------+-------+
3 rows in set (0.00 sec)
НО я хочу включить оценки, даже если они не существуют в выборе, например:
+------+-------+
| two | count |
+------+-------+
| 1 | 5 |
| 2 | 3 |
| 3 | 0 |
| 4 | 0 |
| 5 | 1 |
| 6 | 0 |
+------+-------+
6 rows in set (0.00 sec)
Я видел решения с использованием LEFT JOIN и таблиц поиска, но они слишком сложны, чтобы моя голова для начинающих SQL могла их обернуть.
Я составил справочную таблицу (noten = grades):
mysql> SELECT * from lookup;
+-------+
| noten |
+-------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
+-------+
6 rows in set (0.00 sec)
Но я не могу понять это правильно ...
mysql> SELECT two, COUNT(1) as count FROM data LEFT JOIN lookup on two=lookup.noten WHERE date >= '2018-10-23 00:00:
+------+-------+
| two | count |
+------+-------+
| 1 | 5 |
| 2 | 3 |
| 5 | 1 |
+------+-------+
3 rows in set (0.00 sec)
Ваша помощь будет принята с благодарностью !!!