Предположим, у меня есть следующая таблица MySQL:
user_id date_of_application date_ended grade status
---------------------------------------------------------------
1 2011-01-01 2011-02-28 1.0 Ended
1 2011-02-02 2011-03-28 1.0 Ended
1 2011-03-03 2011-04-28 (1.5) Ended
2 2011-01-01 2011-02-20 2.0 Ended
2 2011-02-02 2011-03-11 2.5 Ended
2 2011-03-03 2011-04-28 (1.0) Ended
1 2011-05-10 - - Pending
2 2011-05-15 - - Pending
- обратите внимание, что таблица может содержать несколько записей одного и того же пользователя, если все ее предыдущие приложения закончились (статус = закончен)
- user_id не является уникальным
- дата в гг-мм-дд формат
- дата_не и оценка обновляются тольков момент, когда приложение закончилось
Здесь я хочу получить все строки (вместе будут все столбцы) ГДЕ состояние «Ожидание» и такое, что значение дляСтолбец оценка для каждой из этих извлеченных строк представляет собой значение последней оценка (в скобках выше), где статус «Завершено» для данного конкретного пользователя (или строки).
Результат:
user_id date_of_application date_ended grade status
---------------------------------------------------------------
1 2011-05-10 2011-06-10 1.5 Pending
2 2011-05-15 2011-06-15 1.0 Pending
---- РЕДАКТИРОВАТЬ -----:
Я не уверен, нужно ли мне создавать еще один поток для этих дополнений ('будет делать, если мне посоветуют сделать это)Во всяком случае - я решил пойти с ответом ypercube (см. ниже) (который работает, за исключением прокомментированной части).Тем не менее, в дополнение к приведенной выше таблице , я также хотел бы выбрать еще два столбца (каждый из другой таблицы):
Рабочий код, который выдает желаемый результат таблицы (см. выше):
SELECT user_id
, date_of_application
, date_ended
, ( SELECT te.grade
FROM TableX AS te
WHERE te.status = 'Ended'
AND te.user_id = t.user_id
ORDER BY te.date_ended DESC
LIMIT 1
) AS grade
, status
FROM TableX AS t
WHERE status = 'Pending'
Теперь мне нужно выбрать эти два других столбца ( is_first_time_user и name ) вместе с ранее упомянутой таблицей результатов.Обратите внимание, что user_id для обеих этих таблиц уникальны:
Table2:
user_id is_firs_time_user
-----------------------------
1 no
2 no
Таблица3:
user_id name
----------------------
1 User A
2 User B