Я пытаюсь оставить вторую таблицу useri_ban
на основе идентификаторов пользователей, с дополнительным условием: useri_ban.start_ban = max_start
.Как получить доступ к родительскому столбцу из подзапроса в соединении
Для меня, чтобы вычислить max_start
, я должен выполнить следующий подзапрос:
(SELECT MAX(ub.start_ban) AS max_start, user_id FROM useri_ban ub WHERE ub.user_id = useri.id)
Кроме того, для того, чтобы добавить max_start
в каждой строке, мне нужно, чтобы внутреннее соединение результат этого подзапроса в основной результат , Однако кажется, что после применения этого соединения подзапрос больше не может получить доступ к useri.id
.
Что я делаю неправильно?
SELECT
useri.id as id,
useri.email as email,
useri_ban.warning_type_id as warning_type_id,
useri_ban.type as type,
useri.created_at AS created_at
FROM `useri`
inner join
(SELECT MAX(ub.start_ban) AS max_start, user_id FROM useri_ban ub WHERE ub.user_id = useri.id) `temp`
on `useri`.`id` = `temp`.`user_id`
left join `useri_ban` on `useri_ban`.`user_id` = `useri`.`id` and `useri_ban`.`start_ban` = `max_start`
Шаг 1: Убедитесь, что данные в запросе, который вам нужен, сохранены. Шаг 2: Дайте вспомогательной таблице псевдоним. Шаг 3: Справочная таблица псевдонимов во внешнем выборе – Fallenreaper