У нас есть таблица MariaDB с подробной информацией пользователей в (пользователях)Ошибки при использовании внешнего столбца запроса в подзапросе для даты ограничения
У нас есть 2-ая таблица дата пересмотра (reviewdates)
| reviewID |USERID |A review date |
| 001 | 123 |2017-01-08 09:02:10 |
etc...
, что записи просматривать даты встреч с каждым пользователем.
У нас есть 3-я таблица (пользовательские данные) с несколькими типами пользовательских данных. Поле ID 101 - это новые цели для обзора. Поле id 98 - старые цели из предыдущего обзора.
|dataID|Userid |Field ID |FieldValue |UpdatedOn |UpdatedBy|
-------------------------------------------------------------
|0001 |123 | 101 |my new target|2017-01-10|145 |
|0002 |123 | 98 |my old target|2017-01-10|0 |
Новая цель (поле ID 101) копируется на старые цели (поле id 98), когда обзор завершен.
Любое поле может быть обновлено в любое время.
У каждого пользователя есть много обзоров. Мне нужно сравнить первое значение старого поля после завершения проверки последним значением перед датой обзора, чтобы убедиться, что они скопировали правильно. Поскольку пользователи могут изменять любое поле, оно должно сравниваться непосредственно перед и после завершения процесса.
поэтому я присоединиться к пользователям и reviewdates
select users.userid,users.username,reviewdates.meetingdate
from companyusers users
join reviewdates on reviewdates.userid = users.userid
, и это дает мне все даты обзора для всех пользователей
Затем я попытался найти самую последнюю запись 101 поля:
select users.userid,users.username, reviewdates.meetingdate, latest101.fielddetails,latest101.updatedon
from users
join reviewdates on reviewdates.userid = users.userid
left join (select userdata.* from userdata u1
where u1.fieldid = 101
and u1.updatedOn = (select max(u2.updatedon)
from userdata u2
where u1.userid = u2.userid
and u2.fieldid = 101)
) as latest101 on (latest101.userid = users.userid)
и это работает нормально, но когда я пытаюсь найти самую последнюю запись до каждая дата обзора:
select users.userid,users.username,reviewdates.meetingdate,latest101.fielddetails,latest101.updatedon
from users
join reviewdates on reviewdates.userid = users.userid
left join (select userdata.* from userdata u1
where u1.fieldid = 101
and u1.updatedOn = (select max(u2.updatedon)
from userdata u2
where u1.userid = u2.userid
and u2.fieldid = 101
#date limit
and u2.updatedOn < reviewdates.meetingdate)
) as latest101 on (latest101.userid = users.userid)
Я получаю ошибку
"unknown column reviewdates.meetingdate in where clause"
. Я нашел множество заявлений, в которых я не могу ссылаться на внешнее соединение в подзапросе, но ни один из них не дает возможных ответов, которые применяются к этим ограничениям даты.
Любая помощь или указатели будут оценены.
Я не думаю, что я фильтрую дату обзора. Я связываю пользователей с отзывами, чтобы получить список каждой даты обзора для каждого пользователя, так как мне нужно проверять данные в полях целей (101) до и после каждой даты обзора для каждого пользователя, чтобы доказать, что код, который я использовал, работали ранее. Я могу показать свою работу сейчас, но меня попросили также проверить каждую существующую запись. – user3797323