У меня есть система управления студента для моего боевых искусств клуба, различных типов информации, хранится в разных таблицах БД,Mysql группы/заказ
для посещения, и градуировок новой строки добавляется для каждого нового события.
Я пытаюсь получить информацию из таблицы студентов и перечислить общие уроки, полученные из таблицы посещаемости, найти их текущую информацию о классе из таблицы оценок и заказать это по порядку, установленному в таблице grades_list.
Так у меня есть это:
SELECT * , COUNT(date) AS `count`
FROM attendance a
JOIN students s ON a.student_id = s.student_id
JOIN gradings g ON g.student_id = s.student_id
JOIN grades_list gl ON gl.grade = g.grade
WHERE s.class <>'Little Monsters'
AND date
BETWEEN'2013-01-01'
AND now()
GROUP BY a.student_id
ORDER BY gl.ID
Это в настоящее время делает правильный вид вещи, но это не показывает все результаты, и если есть более чем одна запись для каждого класса лиц (что там будет в конечном итоге), он показывает один результат, но не последний. В настоящее время у меня два человека в таблице градиентов с двумя записями, один из этих людей не показан ни на одном другом, он показывает свою самую старую запись, которую он должен показывать самой новой.
Надеюсь, что все имеет смысл.
Cheers.
Добавить 'GROUP_CONCAT()' для многих части 1: п отношения и 'explode' результат позже (посещаемость/градуировки?). (Или вообще не 'GROUP BY', и вы получите дубликат' student_id'.) Дополнительные примечания: вы можете денормализовать таблицы 'посещаемости' и' градации 'в одну таблицу, если они имеют строгую связь 1: 1 с ограничениями NOT NULL. А также 'grades_list' выглядит как небольшая таблица поиска. Это действительно необходимо в запросе или вообще? –
Немного путайте некоторые из этих терминов, поэтому им нужно взглянуть на них сейчас. Grades_list настроил его порядок. –