У меня есть то, что можно описать только как кажущуюся простой проблему с вероятным простым решением; но это простое решение ускользает от меня. Я искал и прогуливался по обширной сети StackOverflow только для того, чтобы найти короткие решения только для решения, которые кажутся чрезвычайно сложными. Я уже вид решил эту проблему, но это отвратительно, и мне стыдно за это. Разумеется, есть лучший способ, потому что должен быть Рыцарь в сияющей броне MySQL, владеющий поисковым мечом, который может придумать простое и изящное решение. Вот так:Oh MySQL, как вы присоединяетесь к соответствующим записям по дате
Для этого вопроса мы будем держать эти две таблицы простыми.
Table 1
users (user_id, active, name)
и
Table 2
user_projects (user_project_id, user_id, start_date, details)
В этом случае записи для пользователей добавляются по мере необходимости. Соответствующие записи затем добавляются, когда проекты завершаются пользователями.
Мой вопрос: Используя запрос, как я могу получить 1 запись, содержащую всю информацию в таблице 1, активных пользователей, присоединившихся к записи из таблицы 2, с самой последней датой на основе start_date?
Другими словами, если у меня есть это:
| user_id | active | name |
| 1 | 1 | brian |
и это:
| user_project_id | user_id | start_date | details |
| 1 | 1 | 2013-10-02 | proj 1 |
| 2 | 1 | 2013-11-26 | proj 2 |
| 3 | 1 | 2014-01-02 | proj 3 |
производит запрос, который дает мне это:
| user_id | active | name | user_project_id | user_id | start_date | details |
| 1 | 1 | brian | 3 | 1 | 2014-01-02 | proj 3 |
О, пожалуйста, о, пожалуйста, дайте есть ответ, потому что я обязательно увяжу без него.
Просто быть четко: вы хотите строку для каждого пользователя и их самый последний проект? FYI, вы пытаетесь найти «групповой максимум». (Должен помочь вам Google в будущем).Это можно сделать с помощью одного запроса (как показано ниже), но это может быть очень неэффективным - не бойтесь делать некоторые из обработки кода. – aidan
@aidan, Да. Максимум по группе; Раньше я этого не слышал. Спасибо вам за это. – brian