Не знаю, как точно назвать проблему. Поэтому мои примеры таблиц:
Люди:
id_people | peopleName |
------------------------
1 | John |
2 | Jane |
3 | Frank |
4 | Emma |
Курсы:
id | id_course | id_people | date |
-----------------------------------------
1 | 1 | 1 | 2011-02-14 |
2 | 2 | 1 | 2013-05-01 |
3 | 3 | 1 | 2015-08-25 |
4 | 1 | 2 | 2012-01-05 |
5 | 1 | 4 | 2017-10-10 |
Теперь я хочу создать таблицу, в которой у меня по одной строке на человека и на каждого Конечно, столбец с датой вроде:
id_people | peopleName | Course1 | Course2 | Course3 |
---------------------------------------------------------------
1 | John | 2011-02-14 | 2013-05-01 | 2015-08-25 |
2 | Jane | 2012-01-05 | | |
3 | Frank | | | |
4 | Emma | 2017-10-10 | | |
Я попытался следующий запрос:
SELECT *,
max(case when courses.id_course = 1 then cource.date end) as Course1,
max(case when courses.id_course = 2 then cource.date end) as Course2,
max(case when courses.id_course = 3 then cource.date end) as Course3
FROM people
JOIN courses ON people.id_people = courses.id_people
GROUP BY people.id_people
Но я получил ошибку # 1055 ([..] это несовместимо с sql_mode = only_full_group_by ). Таким образом, это заставляет меня добавить столбец course.id, course.id_course и course.date в группу с помощью statemant. Это приводит к ряду на человека и курс. Как я могу получить желаемую итоговую таблицу с отметкой sql? У меня нет права изменять переменную sql_mode.