簡體   English   中英

如何在MS-Access中創建一個返回三個其他查詢的交集的查詢?

[英]How to make a Query in MS-Access that returns the intersection of three other queries?

我有一個“搜索”表單,允許用戶輸入位置,日期或ID。 此表單生成三個查詢,返回適當的結果,如果沒有為該類別輸入搜索詞,則生成所有記錄。 我打算做第四個查詢,它采用前三個的交集,但一直無法使它工作。 我已經回顧了有關使用SQL INNER JOIN函數的類似問題,但無法使其工作。 我的三個查詢中的每個查詢都在下面。 (或者,如果有更好的方法可以做到這一點,請告訴我。我嘗試在一個查詢中完成所有操作,這很糟糕)。

Qry_ByDate:

SELECT tbl_AssyMoves.[Assy ID], tbl_AssyMoves.[From ICA], tbl_AssyMoves.[From Loc], tbl_AssyMoves.[To ICA], tbl_AssyMoves.[To Loc], tbl_AssyMoves.Date, tbl_AssyMoves.Comments
FROM tbl_AssyMoves
WHERE (((tbl_AssyMoves.Date) Between [Forms]![Form1]![StartDate] And [Forms]![Form1]![EndDate]))

Qry_ByLoc:

SELECT tbl_AssyMoves.[Assy ID], tbl_AssyMoves.[From ICA], tbl_AssyMoves.[From Loc], tbl_AssyMoves.[To ICA], tbl_AssyMoves.[To Loc], tbl_AssyMoves.Date, tbl_AssyMoves.Comments
FROM tbl_AssyMoves
WHERE (((tbl_AssyMoves.[From ICA]) Like Forms!Form1!Combo_ICA) And ((tbl_AssyMoves.[From Loc]) Like Forms!Form1!Txt_Loc)) Or (((tbl_AssyMoves.[To ICA]) Like Forms!Form1!Combo_ICA) And ((tbl_AssyMoves.[To Loc]) Like Forms!Form1!Txt_Loc))

Qry_ByID:

SELECT tbl_AssyMoves.[Assy ID], tbl_AssyMoves.[From ICA], tbl_AssyMoves.[From Loc], tbl_AssyMoves.[To ICA], tbl_AssyMoves.[To Loc], tbl_AssyMoves.Date, tbl_AssyMoves.Comments
FROM tbl_AssyMoves
WHERE (((tbl_AssyMoves.[Assy ID]) Like [Forms]![Form1]![txt_AssyID]))

您需要使用UNION語句來組合三個查詢的結果。 在Access中, UNION自動不會返回重復項,這可能是您想要的。 如果你想要重復,你可以使用UNION ALL

SELECT tbl_AssyMoves.[Assy ID], tbl_AssyMoves.[From ICA], tbl_AssyMoves.[From Loc], 
tbl_AssyMoves.[To ICA], tbl_AssyMoves.[To Loc], tbl_AssyMoves.Date, tbl_AssyMoves.Comments

FROM 

(SELECT tbl_AssyMoves.[Assy ID], tbl_AssyMoves.[From ICA], tbl_AssyMoves.[From Loc], 
tbl_AssyMoves.[To ICA], tbl_AssyMoves.[To Loc], tbl_AssyMoves.Date, tbl_AssyMoves.Comments 
FROM Qry_ByDate

UNION SELECT tbl_AssyMoves.[Assy ID], tbl_AssyMoves.[From ICA], tbl_AssyMoves.[From Loc], 
tbl_AssyMoves.[To ICA], tbl_AssyMoves.[To Loc], tbl_AssyMoves.Date, tbl_AssyMoves.Comments 
FROM Qry_ByLoc

UNION SELECT tbl_AssyMoves.[Assy ID], tbl_AssyMoves.[From ICA], tbl_AssyMoves.[From Loc], 
tbl_AssyMoves.[To ICA], tbl_AssyMoves.[To Loc], tbl_AssyMoves.Date, tbl_AssyMoves.Comments 
FROM Qry_ById)

3個查詢的交集返回應用WHERE子句中所有條件的所有行:

SELECT tbl_AssyMoves.[Assy ID], tbl_AssyMoves.[From ICA], tbl_AssyMoves.[From Loc],
tbl_AssyMoves.[To ICA], tbl_AssyMoves.[To Loc], tbl_AssyMoves.Date, tbl_AssyMoves.Comments
FROM tbl_AssyMoves 
WHERE
  (tbl_AssyMoves.Date Between [Forms]![Form1]![StartDate] And [Forms]![Form1]![EndDate])
  And
  (tbl_AssyMoves.[Assy ID]) Like [Forms]![Form1]![txt_AssyID])
  And
  (((tbl_AssyMoves.[From ICA]) Like Forms!Form1!Combo_ICA) And ((tbl_AssyMoves.[From Loc]) Like Forms!Form1!Txt_Loc)) Or (((tbl_AssyMoves.[To ICA]) Like Forms!Form1!Combo_ICA) And ((tbl_AssyMoves.[To Loc]) Like Forms!Form1!Txt_Loc))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM