查询已加入任何查询

时间:2018-01-08 16:22:48

标签: sql ms-access

我正在尝试编写一个使用其他查询信息的SQL查询。我已经在MSAccess中对它进行了测试并且它可以正常工作,但是我需要将它移到SQL上以将其写入代码中,因为我不知道如何将SELECT语句加入到另一个{ {1}}。

以下是Access查询,第一个名为qryReadMeRequired的查询:

SELECT

第二个查询使用qryReadMeRequired:

SELECT 
  zEdits.ID, 
  tblReadMeDocument.ID AS DocumentID
FROM zEdits, tblReadMeDocument
WHERE (((zEdits.ID)=[Forms]![frmMain]![LoginID]) 
  AND ((zEdits.WorkArea)=[Forms]![frmMain]![WorkArea]) 
  AND ((tblReadMeDocument.RequiredBy)="all")) OR (((zEdits.ID)=[Forms]![frmMain]![LoginID]) AND ((zEdits.WorkArea)=[Forms]![frmMain]![WorkArea]) AND ((tblReadMeDocument.RequiredBy)=[Forms]![frmMain]![WorkArea]));   

由于

1 个答案:

答案 0 :(得分:0)

这称为subquery。要创建子查询,请粘贴完整的SELECT语句,该语句表示FROM子句中括号内的子查询。然后你给它一个别名:

SELECT qryReadMeRequired.ID,
    tblReadMeRecord.ReadDate
FROM tblReadMeRecord
RIGHT JOIN 
    (
        SELECT zEdits.ID,
            tblReadMeDocument.ID AS DocumentID
        FROM zEdits,
            tblReadMeDocument
        WHERE               
            zEdits.ID = [Forms]![frmMain]![LoginID]
            AND zEdits.WorkArea = [Forms]![frmMain]![WorkArea]
            AND (tblReadMeDocument.RequiredBy = "all" OR tblReadMeDocument.RequiredBy = [Forms]![frmMain]![WorkArea])               
    ) AS qryReadMeRequired ON tblReadMeRecord.DocumentID = qryReadMeRequired.DocumentID
    AND tblReadMeRecord.PersonID = qryReadMeRequired.ID
WHERE tblReadMeRecord.ReadDate IS NULL;

我还重写了一下,删除了多余的括号和冗余逻辑。