У меня есть следующие таблицы
пользователь
сочинение
проект_фаза
1 Пользователь отправляет только 1 эссе в одном проекте и я хочу иметь комбинированную таблицу, которая показывает мне пользователя и этап, на котором было отправлено эссе.
Я пытаюсь получить запись с МАКСИМАЛЬНОЙ датой из project_phase, которая ниже date_submitted
Итак, используя приведенные выше данные, я хочу получить
до сих пор я объединил таблицы с INNER JOIN, но следующий запрос возвращает повторяющиеся записи. Я также пробовал ROW_NUMBER() и MAX(), но я неправильно структурировал его, чтобы получить ответ, который я ищу.
SELECT
U.name,
E.date_submitted,
P.phase
FROM
essay E
INNER JOIN user U ON U.id = E.user_id
INNER JOIN project_phase P ON P.project_id = E.project_id and E.date <= P.date_submitted
Любая помощь приветствуется, спасибо.
Я бы предложил коррелированный подзапрос:
SELECT U.name, E.date_submitted,
(SELECT P.phase
FROM project_phase P
WHERE P.project_id = E.project_id AND
P.date <= E.date_submitted
ORDER BY p.date DESC
LIMIT 1
) as phase
FROM essay E JOIN
user U
ON U.id = E.user_id;
Это был быстрый ответ! Просто запустите несколько проверок примерно в 100 тыс. строк, и все будет выглядеть хорошо. Спасибо!!
Кажется, все в порядке, за исключением: изменить строку WHERE на: WHERE P.project_id = E.project_id AND