と の 2 つのテーブルがPersons(idPerson INT)
ありQuestions(idQuestion INT)
ます。
3番目のテーブルにデータを挿入したい:OrderedQuestions(idPerson INT, idQuestion INT, questionRank INT)
すべての人にすべての質問をランダムな順序で割り当てたいです。
CROSS JOINをしようと思ったのですが、全員同じ順番で質問されてしまいます。
INSERT INTO OrderedQuestions
SELECT idPerson, idQuestion, questionRank FROM Persons
CROSS JOIN
(SELECT idQuestion,ROW_NUMBER() OVER (ORDER BY NEWID()) as questionRank
FROM Questions) as t
どうすれば、すべての人に対してそのようなランダムで異なる順序を達成できますか?
明らかに、私は解決策をできるだけ速くしたいと思っています。(TSQL または Linq to SQL を使用して実行できます)
3 人で 5 つの質問に対する望ましい結果:
idPerson idQuestion questionRank
1. 1 18 1
2. 1 14 2
3. 1 25 3
4. 1 31 4
5. 1 2 5
6. 2 2 1
7. 2 25 2
8. 2 31 3
9. 2 18 4
10. 2 14 5
11. 3 31 1
12. 3 18 2
13. 3 14 3
14. 3 25 4
15. 3 2 5
結果を編集しました (ID は自動生成されるため、質問の順序付けには使用できません)。