リレーションのない 2 つのテーブルがあり、両方のテーブルの列数が異なりますが、同じであるが異なるデータを保持する列がいくつかあります。必要なデータのみの関数またはビューを作成できましたが、日付をフィルター処理してデータをカウントしようとすると、常に間違ったカウントが返されます。2つの機能と私がやろうとしていることを示して説明しましょう:
機能 1
ID - number from 1 to 8
data sent - YES or NO
Date - date value
機能 2
ID - number from 1 to 8
data sent - yes or no
date - date value
両方を別々に実行すると、テーブルからすべての行が取得され、すべてがうまく見えます。
次に、各関数に次を追加しようとします。
select
count([data sent]), ID
from function1
Where (date between @date1 and @date2)
group by ID
上記のステートメントはうまく機能し、各関数に対して正しい結果が得られます。
ここで、これら 2 つの関数を 1 つに追加して、1 ページで両方の関数からカウントを取得したい場合はどうすればよいか考えました。
そこで、次の関数を作成しました。
機能 3
select
count(Function1.[data sent]) as Expr1,
Function1.id,
count(Function2.[data sent]) as Expr2,
Function1.date
from
Function1
LEFT OUTER JOIN
Function2 on Function1.id = Function2.id
Where
(Function1.date between @date1 and @date2)
group by
Function1.id
上記を実行すると、次の表が得られます。
ID Expr1 Expr2
Expr1 と Expr2 の両方で、どこから来たのかわからない結果が得られます。1 つのテーブルにはほぼ 15000 行が保持され、もう 1 つのテーブルには約 5000 行が保持されるため、何かが 100000 倍されていると思います。
最初に知りたいのは、日付でフィルタリングし、両方のテーブルから同時にレコードをカウントできるかどうかです。さらに詳しい情報が必要な場合はお知らせください。喜んで共有し、詳しく説明いたします。
ありがとうございました