我在VB.net上用数据库访问完成了一个应用程序。 有两个表,一个带有仪器记录,另一个带有校准记录。 我想循环使用仪器,对于每个仪器,我只想检索最后一个校准记录。将有超过十个记录的工具对用户来说变得烦人。 有什么建议吗?
我的查询代码如下:
set rsDue = Server.CreateObject("ADODB.Recordset")
rsDue.ActiveConnection = MM_Transmille_STRING
rsDue.Source = "SELECT Calibrations.Cert_No, Calibrations.Cust_Ref, Calibrations.Rec_Date, Instruments.Inst_ID, Instruments.Description, Instruments.Model_no, Instruments.Manufacturer, Instruments.Serial_no, Instruments.Status, Instruments.Cust_Acc_No FROM Instruments INNER JOIN Calibrations ON Instruments.Inst_ID = Calibrations.Inst_ID WHERE Instruments.Cust_Name = '" & Session("MM_Username") & "' AND Instruments.Cust_Acc_No = '" & Session("MM_Password") & "' AND Instruments.Cust_Acc_No = '" + Replace(rsDue__MMColParam, "'", "''") + "' AND Instruments.Status IN ('N') ORDER BY Calibrations.Rec_Date DESC;"
rsDue.CursorType = 0
rsDue.CursorLocation = 2
rsDue.LockType = 3
rsDue.Open()
rsDue_numRows = 0
答案 0 :(得分:0)
如果您执行GROUP BY Instruments.Inst_ID
,每个乐器只能获得一个结果:具有最新Calibrations的结果。SELECT
Calibrations.Cert_No,
Calibrations.Cust_Ref,
Calibrations.Rec_Date,
Instruments.Inst_ID,
Instruments.Description,
Instruments.Model_no,
Instruments.Manufacturer,
Instruments.Serial_no,
Instruments.Status,
Instruments.Cust_Acc_No
FROM
Instruments
INNER JOIN Calibrations ON Instruments.Inst_ID = Calibrations.Inst_ID
WHERE
Instruments.Cust_Name = '" & Session("MM_Username") & "'
AND Instruments.Cust_Acc_No = '" & Session("MM_Password") & "'
AND Instruments.Cust_Acc_No = '" & Replace(rsDue__MMColParam, "'", "''") & "'
AND Instruments.Status IN ('N')
GROUP BY
Instruments.Inst_ID
ORDER BY
Calibrations.Rec_Date DESC