この質問はこの質問の続きです
ただし、データベース構造にわずかな変更があります(少し単純化しすぎたため)
次のようなデータ列を持つデータベースがあります。
Key, Instance, User ID, Day, Size, Instance Type
キー- これは主キーです。
インスタンス- これは特定のインスタンスの記述子です (これは一意になります)。
ユーザー ID - これは、この表のエントリ数よりも少ない数のユーザーのうちの 1 人を指します。
日- これは、特定のユーザーがこのインスタンスを作成した日です。Day 1 または Day 2 のいずれかになります。
サイズ- これは、保存されるデータのサイズです。
インスタンス タイプ- いくつかのインスタンス タイプがあります。インスタンス自体は、これらのインスタンス タイプの 1 つになります。
以前の質問では、ネストされた SQL クエリを作成して、1 日目と 2 日目にインスタンスを持ち、この場合は特定のインスタンス タイプを持つ個別のユーザーを見つけました。
現在、これらのクエリが 2 セットあります。
私が今やりたいことは、3 番目のクエリであり、ユーザー IDが他のクエリのいずれにも存在しないデータベースを返します。
これまでのところ、クエリを設定しましたが、非常に遅く ( Onステートメントの <> コンパレータと関係があります)、100% 正確に実行できるかどうかさえわかりません。
これまでの私のSQL文は次のとおりです。
Select Max( Table.Key ) as Key,
Max( Table.Instance ) as Instance,
Table.[User ID],
Max( Table.Day ) as Day,
Max( Table.Size ) as Size,
Max( Table.[Instance Type] ) as [Instance Type]
from (((Table
inner join (Select top 90 Max( Table.Key ) as Key,
Max( Table.Instance ) as Instance,
Table.[User ID],
Max( Table.Day ) as Day,
Max( Table.Size ) as Size,
Max( Table.[Instance Type] ) as [Instance Type]
from Table
where Table.[Instance Type]="type1" and
Table.[Day]=1 and
1=1
group by Table.[User ID]) as t2
on Table.[User ID]<>t2.[User ID])
inner join (Select top 90 Max( Table.Key ) as Key,
Max( Table.Instance ) as Instance,
Table.[User ID],
Max( Table.Day ) as Day,
Max( Table.Size ) as Size,
Max( Table.[Instance Type] ) as [Instance Type]
from Table
where Table.[Instance Type]="type1" and
Table.[Day]=2 and
1=1
group by Table.[User ID]) as t3
on Table.[User ID]<>t3.[User ID])
inner join (Select Table.[User ID]
from Table
where 1=1 ) as t4
on Table.[User ID]=t4.[User ID])
where Table.[Instance Type]="type1"
group by Table.[User ID];
私が求めているものを手に入れる方法についての助けやアドバイスは大歓迎です!