0

私はこの質問を調査し、さまざまな SQL 手法を学ぶためにほぼ 1 週間働きました。Microsoft Access のリストボックスに結果を表示しようとしています。これらの結果をフィルタリングするための列SQLIDofLoggers, JobNumber, DateDeployed, DateReturned, AHULocation, AccessPointと 2 つのコンボボックスがあります ( VBA を使用して回避策を実行したため、投稿された SQL には含まれていません)。cboLoggerType and cboOrderBycboOrderBy

私がやりたいことは、それぞれの個別のレコードを 1 つだけプルすることですSQLIDofLogger。それぞれのいくつかのレコードの中からその1つのレコードを決定するSQLIDofLoggerには、それらをDateReturn-edsで注文し、最新のものを選択しDateReturnますが、nullのレコードを表示したくありません。つまり、まだ仕事中です

これは私が現在持っている正しい情報を表示する SQL です。各ロガーに対して複数のレコードを表示するだけです。

SELECT 
    (SELECT TOP 1 tblLoggers.LoggerID FROM tblLoggers WHERE tblLoggers.ID = tblUse.IDofLogger) AS SQLIDofLogger,
    (SELECT TOP 1 tblProjectList.JobNumber FROM tblProjectList WHERE( tblProjectList.ID = tblUse.IDofProject)) AS expr1,
    tblUse.DateDeployed, tblUse.DateReturned, tblUse.AHULocation, tblUse.AccessPoint
FROM tblUse
WHERE (
        (IIf([Forms]![frmByType].[cboLoggerType]<>'(ALL)',
            ((SELECT TOP 1 tblLoggers.LoggerType FROM tblLoggers WHERE tblLoggers.ID = tblUse.IDofLogger ORDER BY ID)=[Forms]![frmByType].[cboLoggerType]),
            '*')<>False
) AND (
        (tblUse.DateReturned) In (SELECT MAX(tblUse.DateReturned) FROM tblUse GROUP BY tblUse.IDofLogger))
)
GROUP BY tblUse.DateDeployed, tblUse.DateReturned, tblUse.AHULocation, tblUse.AccessPoint, tblUse.IDofProject, tblUse.IDofLogger
ORDER BY 1, tblUse.AHULocation;

このコードを可能な限りクリーンアップしようとしました。理想的ではないことはわかっていますが、少しずつ追加し続けたところ、「機能」しました。方程式の最後の部分を取得しようとしたものを投稿しますが、どれも機能しません (明らかに笑)。GROUP BYこれに対する最善の行動方針( 、一部JOIN、など)がわからないので、EXISTSどんな提案も受け付けています。

4

0 に答える 0