使用Access 2003查詢服務表現問題
查詢
SELECT t1.PERSONID ,t1.CARDEVENTDATE
,MIN(t2.CARDEVENTTIME) AS Intime
,MAX(t3.CARDEVENTTIME) AS Outtime,
Min(t3.Cardeventtime) as BreakOut,
Max(t4.CardEventTime) as BreakIn
FROM ((( SELECT PERSONID
, CARDEVENTDATE
FROM T_CARDEVENT) as t1
LEFT OUTER JOIN (SELECT PERSONID
,CARDEVENTDATE, FUNCTION
, CARDEVENTTIME
FROM T_CARDEVENT WHERE (FUNCTION = 'A')) as t2
ON t1.PERSONID = t2.PERSONID
AND t1.CARDEVENTDATE = t2.CARDEVENTDATE) LEFT OUTER JOIN (SELECT PERSONID
,CARDEVENTDATE, FUNCTION
, CARDEVENTTIME
FROM T_CARDEVENT WHERE (FUNCTION = 'D')) as t3
ON t1.PERSONID = t3.PERSONID
AND t1.CARDEVENTDATE = t3.CARDEVENTDATE) LEFT OUTER JOIN (SELECT PERSONID
,CARDEVENTDATE, FUNCTION
, CARDEVENTTIME
FROM T_CARDEVENT WHERE (FUNCTION = 'B')) as t4
ON t1.PERSONID = t4.PERSONID
AND t1.CARDEVENTDATE = t4.CARDEVENTDATE) LEFT OUTER JOIN (SELECT PERSONID
,CARDEVENTDATE, FUNCTION
, CARDEVENTTIME
FROM T_CARDEVENT WHERE (FUNCTION = 'C')) as t5
ON t1.PERSONID = t5.PERSONID
AND t1.CARDEVENTDATE = t5.CARDEVENTDATE
GROUP BY t1.PERSONID, t1.CARDEVENTDATE
當我運行上面的查詢,它正在採取太多的時間來查看結果,所以有時它是顯示錯誤消息「還不夠在內存中的臨時空間「
有任何其他的方式來訪問這樣的查詢。
需要查詢幫助
我不認爲你是從SQL視圖中剪切和粘貼你的SQL,因爲上面的查詢失敗了,我相當確定頂部應該在某個階段引用t5。如果你發佈真正的SQL,這將是最好的。 – Fionnuala 2010-01-11 12:43:12