背景:現在、簡単なオンライン クイズを開発しています。ユーザーが簡単な質問に答えた後、ユーザーは小さなタスクを実行して勝つ可能性を高める機会を得ます。
ユーザーが獲得したすべてのロットは別の行に挿入されるため、「ランダムな」ロットを見つける必要がある場合、勝つ可能性が高くなります (間違っている場合は修正してください)。
ロット テーブルのサンプル データ:
LotId ParticipantId Created
1 1 2012-11-16 12:00:00
2 2 2012-11-16 12:02:00
3 2 2012-11-16 12:06:00
4 2 2012-11-16 12:15:00
5 3 2012-11-16 12:16:00
これは、ParticipantId 2 の参加者が 3 つのロットを持っていることを意味し、したがって、他の参加者と比較して統計的に勝つ可能性が高くなります。
私がしなければならないこと:勝者を引く必要があるときは、くじの表からランダムにくじを選びます。この後、勝者に関する情報を見つける必要があります。
現在、次の SELECT を使用しています (SELECT の改善に関するコメントを歓迎します)。その後、コードの後半で、ユーザーの情報を含む別の SELECT を使用しています。
SELECT TOP 1 LotId, ParticipantId FROM Sample_Lots WITH (NOLOCK)
WHERE
CAST(Created AS DATE) = '2012-11-16'
AND
ParticipantId NOT IN
(
SELECT ParticipantId FROM Sample_Winners WITH (NOLOCK)
WHERE
ParticipantId IS NOT NULL
AND
CAST(ThisDate AS DATE) = '2012-11-16'
)
AND
ParticipantId IN
(
SELECT ParticipantId FROM Sample_Participants WITH (NOLOCK)
WHERE
ParticipationConfirmed IS NOT NULL
)
ORDER BY NEWID()
私はこれについて頭を働かせることができません。ランダムなロットが必要で、このランダムなロットから同じ SELECT でユーザーの情報を取得する必要があります。何か案は?