0

この sql ステートメントを作成すると、6 つの同じレコードが返されます。したがって、2 つのレコードが返されると予想すると、各レコードが 6 つ返されるので、合計で 12 になります。

SELECT 
ce2.* 
FROM customerentry ce, customerentrytrace cet, customerentry ce2 
WHERE ce.accountid = 1 
AND ce.companyid = 1 
AND ce.accountid=cet.accountid 
AND ce.accountid=ce2.accountid 
AND ce.companyid=cet.companyid 
AND ce.companyid=ce2.companyid 
AND cet.documentno = '2012Faktura1' 
AND cet.documenttype = 1 
AND ce2.documentno = cet.offsetdocumentno 
AND ce2.documenttype = cet.offsetdocumenttype 
ORDER BY created;

を追加することで解決できることはわかっていますdistinctが、同じレコードが 6 つ返される理由を知りたいです。誰でも私を助けることができますか?

4

3 に答える 3

1

あなたのテーブル構造についてはわからないので、おそらく1からnの項目に関連するいくつかの列がありWHERE、クエリのセクションでそれらを処理していません.

追加の手段として、データのニーズに焦点を当て、GROUP BYセクションの前にセクションを追加できますORDER

于 2013-09-13T07:14:07.260 に答える
0

問題は、テーブルが正しく結合されていないことが原因である可能性があります。についてお読みくださいJOIN

SELECT ce2.* 
FROM customerentry ce INNER JOIN customerentrytrace cet ON ce.accountid=cet.accountid AND ce.companyid=cet.companyid, 

INNER JOIN customerentry ce2 ON ce.accountid=ce2.accountid AND ce.companyid=ce2.companyid AND ce2.documentno = cet.offsetdocumentno AND ce2.documenttype = cet.offsetdocumenttype 

WHERE ce.accountid = 1 
    AND ce.companyid = 1 
    AND cet.documentno = '2012Faktura1' 
    AND cet.documenttype = 1 

ORDER BY created;
于 2013-09-13T07:50:39.200 に答える