-1
以下のSQLの根底にある理由は、私のサービスのために私に支払う多くのクライアントがいることです。通常、クライアントは支払いをしますが、時には従業員(SQLの応募者)が支払います。私は従業員/申請者に請求書を送付します。なぜ私のSQLにレコードが重複していますか?
支払いを行うのが出願人である場合、次のSQLはレコードを複製します。実際にはここに2つのレコードがありますが、2回表示されます。なぜか分からない。
SELECT DISTINCT tblInvoices.InvoicePK, [Sname] & ", " & [Fname] AS AppName, tblDisclosure.FormSentOff, tblDisclosure.DiscPK, tblInvoices.ApplicantFK, tblClient.ShortName, tblInvoices.Chased, tblInvoices.SentToPayer
FROM tblDisclosure INNER JOIN
(tblInvoices INNER JOIN
tblClient
ON tblInvoices.ApplicantFK = tblClient.ClientPK
) ON tblDisclosure.ClientFK = tblClient.ClientPK
WHERE (((tblDisclosure.FormSentOff) Is Not Null) AND
((tblDisclosure.ReceiptFK) Is Null) AND
((tblInvoices.DatePaid) Is Null))
ORDER BY tblClient.ShortName;
私はこれをグループ化することで停止できます。次のSQLを参照してください。
SELECT DISTINCT Last(tblInvoices.InvoicePK) AS LastOfInvoicePK, [Sname] & ", " & [Fname] AS AppName, tblDisclosure.FormSentOff, tblDisclosure.DiscPK, tblInvoices.ApplicantFK, tblClient.ShortName, tblInvoices.Chased, tblInvoices.SentToPayer
FROM tblDisclosure INNER JOIN
(tblInvoices INNER JOIN
tblClient
ON tblInvoices.ApplicantFK = tblClient.ClientPK
) ON tblDisclosure.ClientFK = tblClient.ClientPK
GROUP BY [Sname] & ", " & [Fname], tblDisclosure.FormSentOff,
tblDisclosure.DiscPK, tblInvoices.ApplicantFK,
tblClient.ShortName, tblInvoices.Chased,
tblInvoices.SentToPayer, tblDisclosure.ReceiptFK,
tblInvoices.DatePaid
HAVING (((tblDisclosure.FormSentOff) Is Not Null) AND ((tblDisclosure.ReceiptFK) Is Null) AND ((tblInvoices.DatePaid) Is Null))
ORDER BY tblClient.ShortName;
私は、グループ化以外のSQLに対するさまざまな修正を試みましたが、それ以外は機能しません。
私はこの問題を解決しましたが、最初に問題が存在する理由について非常に興味があります。
私はかなり理解していません - なぜあなたは 'DISTINCT'が動作していないのか尋ねていますか?メモ欄が含まれていますか?可能な限りクエリを単純化し(出力列を削除する)、サンプルデータと最初のクエリの現在の結果を追加してください。 – Andre
DISTINCTを使用するかどうかにかかわらず、結果は同じ複製です。だから私はDISTINCTを削除するべきだった。メモフィールドはありません。できるだけ早くサンプルデータを提供します。 –