我們有一個MariaDB的表中(用戶)錯誤的子查詢使用外部查詢欄的日期約束
用戶的詳細信息我們有一個評審日期的第2個表(reviewdates)
| reviewID |USERID |A review date |
| 001 | 123 |2017-01-08 09:02:10 |
etc...
的記錄查看每個用戶的會議日期。
我們有一個第三個表(userdata),其中包含多種類型的用戶數據。字段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