[英]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.