ユーザーが要求したクエリを少し変更したときに、私はAccess 2010データベースが異常に動作しています。クエリが実行されてからユーザー入力フォームにフィードされる非常に大きな1つのテーブル(質問しません)があります。とにかく、今日、特定の1つのフォームが、期待していたよりもはるかに少ない結果を返すようになりました。通常は約1200件の結果が返されますが、マイナーチェンジ後は880件に減少しました。私がそれを確認していたとき、それは1100に落ちただけなので、私はさらに300の期待された結果を欠いています。NOT LIKE条件を追加した後に結果が少なすぎるクエリ
このテーブルへのクエリは、奇妙なものにならないように、レイヤーで作成します。私はSQLでうまくはないので、通常はデザインビューを使用してビルドします。私はsqlで混乱することができます。ここで
は、第一層
SELECT [New ZSPWAR Prime].Payer, [New ZSPWAR Prime].Bill_doc, [New ZSPWAR Prime].Sqwak, [New ZSPWAR Prime].Billing_Dt, [New ZSPWAR Prime].Issued_Material, [New ZSPWAR Prime].Serial_No, [New ZSPWAR Prime].[review date], [New ZSPWAR Prime].Mtrl_Qty_Billed, [New ZSPWAR Prime].PO_DT, [New ZSPWAR Prime].PO_NO, [New ZSPWAR Prime].PO_PI, [New ZSPWAR Prime].INV_PT_DT, [New ZSPWAR Prime].[Warr Typ], [New ZSPWAR Prime].Stage, [New ZSPWAR Prime].Returned_Material, [New ZSPWAR Prime].Returned_SNR, [New ZSPWAR Prime].Ret_EQUI, [New ZSPWAR Prime].Sales_Ord, [New ZSPWAR Prime].SVO_No, [New ZSPWAR Prime].[ME23N PO_Owner], [New ZSPWAR Prime].Ret_Note, [New ZSPWAR Prime].Ret_Date, [New ZSPWAR Prime].Ret_Note_DESC, [New ZSPWAR Prime].WACD, [New ZSPWAR Prime].Wty_Prog_Code_Desc, [New ZSPWAR Prime].VR_Amount, [New ZSPWAR Prime].Freight_Amt, [New ZSPWAR Prime].VDCD, [New ZSPWAR Prime].Ven_Den_Code_Desc, [New ZSPWAR Prime].ZZ07, [New ZSPWAR Prime].[root cause] AS [Email Follow Up], [New ZSPWAR Prime].[Step 1 Complete], [New ZSPWAR Prime].[Step 1 notes], [New ZSPWAR Prime].[Step 2 complete], [New ZSPWAR Prime].[step 2 notes], [New ZSPWAR Prime].[Step 3 complete], [New ZSPWAR Prime].[step 3 notes], [New ZSPWAR Prime].[Push INV_PMT], [New ZSPWAR Prime].[PO Due Date]
FROM [New ZSPWAR Prime]
WHERE ((([New ZSPWAR Prime].Payer) Not Like "10208" And ([New ZSPWAR Prime].Payer) Not Like "2300" And ([New ZSPWAR Prime].Payer) Not Like "32770") AND (([New ZSPWAR Prime].Billing_Dt)>#7/1/2016#) AND (([New ZSPWAR Prime].Mtrl_Qty_Billed)>0) AND (([New ZSPWAR Prime].PO_NO) Not Like "" And ([New ZSPWAR Prime].PO_NO) Is Not Null) AND (([New ZSPWAR Prime].[Step 3 complete])<>Yes));
そして、ここにSQLが第二である:
SELECT [Day2Day InvPmt a].Payer, [Day2Day InvPmt a].Bill_doc, [Day2Day InvPmt a].Sqwak, [Day2Day InvPmt a].Billing_Dt, [Day2Day InvPmt a].Issued_Material, [Day2Day InvPmt a].Serial_No, [Day2Day InvPmt a].[review date], [Day2Day InvPmt a].Mtrl_Qty_Billed, [Day2Day InvPmt a].PO_DT, [Day2Day InvPmt a].PO_NO, [Day2Day InvPmt a].PO_PI, [Day2Day InvPmt a].INV_PT_DT, [Day2Day InvPmt a].[Warr Typ], [Day2Day InvPmt a].Stage, [Day2Day InvPmt a].Returned_Material, [Day2Day InvPmt a].Returned_SNR, [Day2Day InvPmt a].Ret_EQUI, [Day2Day InvPmt a].Sales_Ord, [Day2Day InvPmt a].SVO_No, [Day2Day InvPmt a].[ME23N PO_Owner], [Day2Day InvPmt a].Ret_Note, [Day2Day InvPmt a].Ret_Date, [Day2Day InvPmt a].Ret_Note_DESC, [Day2Day InvPmt a].WACD, [Day2Day InvPmt a].Wty_Prog_Code_Desc, [Day2Day InvPmt a].VR_Amount, [Day2Day InvPmt a].Freight_Amt, [Day2Day InvPmt a].VDCD, [Day2Day InvPmt a].Ven_Den_Code_Desc, [Day2Day InvPmt a].ZZ07, [Day2Day InvPmt a].[Email Follow Up], [Day2Day InvPmt a].[Step 1 Complete], [Day2Day InvPmt a].[Step 1 notes], [Day2Day InvPmt a].[Step 2 complete], [Day2Day InvPmt a].[step 2 notes], [Day2Day InvPmt a].[Step 3 complete], [Day2Day InvPmt a].[step 3 notes], [Day2Day InvPmt a].[Push INV_PMT], [Day2Day InvPmt a].[PO Due Date]
FROM [Day2Day InvPmt a]
WHERE ((([Day2Day InvPmt a].INV_PT_DT) Is Null) AND (([Day2Day InvPmt a].[Step 1 notes]) Not Like "*" & "windsh*")) OR ((([Day2Day InvPmt a].INV_PT_DT) Like "") AND (([Day2Day InvPmt a].[Step 1 notes]) Not Like "*" & "windsh*"))
ORDER BY [Day2Day InvPmt a].Bill_doc;
犯人はこの少しはここにある:
WHERE ((([Day2Day InvPmt a].INV_PT_DT) Is Null) AND (([Day2Day InvPmt a].[Step 1 notes]) Not Like "*" & "windsh*")) OR ((([Day2Day InvPmt a].INV_PT_DT) Like "") AND (([Day2Day InvPmt a].[Step 1 notes]) Not Like "*" & "windsh*"))
一部除きます"windsh *"は最近の混乱の原因となります。
少し前に、私は1200リターンを得ていました。後で、私は880を取得します。私はこれを逆に構築しようとしましたが、フィルタリングされているはずの100個しかありません。任意のアイデア、またはこれはここに答えがありますか?ヌル値は明らかにパターンが一致していなくても
おかげで、事前
ようになっているはずであるあなたは、おそらく ため、where句[Day2Day InvPmt Aを簡略化することができ] .INV_PT_DT を使用して 'どこでLen([Day2Day InvPmt a] .INV_PT_DT&" ")> 0と[Day2Day InvPmt a]。[Step 1 notes])好きではない" * windsh * "' クエリも同様です。ワイルドカードを風の前後にしたいですか? – Minty
@Minty私は一貫性のない命名規則を扱っているので、前後にワイルドカードが必要です。なぜ私は "LEN"のものが役に立つのかよく分かりません。 –
あなたは、[Day2Day InvPmt a] WHERE Nz(INV_PT_DT、 "" = "" AND [Step 1 notes] LIKE "* windsh *" 'は、除外したい追加行の数に対して妥当な値を返します。 –