Как вывести несколько последних дат?

curly86

Новичок
MySQL, Mysql Command Line

Даны таблицы Interns, Mentors
В них 11 интернов и 4 ментора.
У каждого интерна есть своя дата старта практики.
У менторов разное количество интернов.
Задача вывести менторов (4), имена и даты тех интернов, у которых практика началась последними.
Создаю запрос

SELECT CONCAT(interns.f_name,interns.l_name) AS Intern, CONCAT(mentors.f_name, mentors.l_name) AS Mentor, (SELECT MAX(interns.Start_date) FROM Interns WHERE interns.interd_id=mentors.intern_id) FROM Interns, Mentors;

Ответ - таблица со всеми интернами, менторами, датами. Что логично.
Исправляю, говорю, конкретно

SELECT CONCAT(interns.f_name,interns.l_name) AS Intern, CONCAT(mentors.f_name, mentors.l_name) AS Mentor, (SELECT MAX(interns.Start_date) FROM Interns WHERE interns.interd_id=mentors.intern_id) FROM Interns, Mentors GROUP BY Mentor;

Группирует по менторам, но даты не те, что нужны, то есть, выбирает любого интерна под ментора...
 

curly86

Новичок
нашли решение как

SELECT CONCAT(Interns.f_name, ' ', Interns.l_name) AS Intern, CONCAT(Mentors.f_name,' ', mentors.l_name) AS Mentor, Max(Interns.pr_st_date) AS START_DATE FROM Interns, Interns_specialty, Mentors WHERE Interns.intern_id = Interns_specialty.intern_id AND interns_specialty.mentor_id = mentors.mentor_id GROUP BY mentors.mentor_id ORDER by Start_date;

Вдруг кому пригодится
 

AnrDaemon

Продвинутый новичок
SELECT CONCAT(interns.f_name,interns.l_name) AS Intern, CONCAT(mentors.f_name, mentors.l_name)
Не стоит так делать даже в шутку. Это даже не бизнес-логика, это логика презентации, не надо пихать её в запросы к БД.
Общее правило объединения таблиц - первой указывай табдицу, определяющаю результаты выборки.
В твоём случае это количество интернов, по которому у тебя распределяются даты старта практики.
Потом уже на неё джойни уточняющие таблицы.
 
Сверху