2016-10-23 8 views
-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に対するさまざまな修正を試みましたが、それ以外は機能しません。

私はこの問題を解決しましたが、最初に問題が存在する理由について非常に興味があります。

+0

私はかなり理解していません - なぜあなたは 'DISTINCT'が動作していないのか尋ねていますか?メモ欄が含まれていますか?可能な限りクエリを単純化し(出力列を削除する)、サンプルデータと最初のクエリの現在の結果を追加してください。 – Andre

+0

DISTINCTを使用するかどうかにかかわらず、結果は同じ複製です。だから私はDISTINCTを削除するべきだった。メモフィールドはありません。できるだけ早くサンプルデータを提供します。 –

答えて

0

原因を見つけました。それは長い話ですが、それは支払人がクライアントではない状況にどのように対処しようとしたかによるものです。それで、それは抽選盤に戻ります。

関連する問題