は、表を参照してください:http://i.stack.imgur.com/4FitK.png異なるテーブルに属するランダムな行数を1つの結果セットにフェッチするか?
誰もがカテゴリと難易度と質問構成の設定で設定した質問の合計数に基づいて、ランダムな質問をフェッチするクエリを作成して私を助けることができます。表。
私は1つを構築しました。
SELECT c.question_id
, s.question_set_id
FROM qm_question_category c
, qm_question_set_cfg s
WHERE (c.category_id = s.category_id
AND c.difficulty_level = s.difficulty_level
)
AND ROWNUM <= (SELECT SUM(total_questions)
FROM qm_question_set_cfg
WHERE question_set_id = 101138) /* Set ID */
ORDER BY dbms_random.value
これは、カテゴリと難易度に基づいて既存の質問からランダムに質問の総数を取得します。
しかし、まず、各カテゴリ+難易度の質問をランダムに取り出し、それらの行を1つの結果セットにマージします。私がしようとしている何
order by rank() over (partition by c.category_id order by dbms_random.value)
:(。たとえばについて質問構成の設定で設定されCategoryNから10件までカテゴリ2からカテゴリ1からランダムに10問、10)
作成したクエリは結果をランダム化しません。 where節の 'ROWNUM'は' ORDER BY'ステートメントの前に適用されます。結果は一貫していることが保証されていませんが、実際にランダムである可能性は低いです。 – Allan