2017-05-05 11 views
0

は、SQLクエリSELECT exam_id, task, variant FROM tasks WHERE exam_id=1を持つ我々が得る:SQL結果からパラメトリックサブセットを取得する方法は?

exam_id task variant 
    1   1  1 
    1   1  2 
    1   1  3 
    1   2  1 
    1   2  2 
    1   2  3 

我々は範囲[minVariant; maxVariant]から乱数の配列を生成し、クライアント側では。 A = [minVariant; maxVariant]。 AからのXnは、n番目の対応するタスクの変形である。 Aのための

exam_id task variant 
    1   1  1 
    1   2  3 

バリアントの配列のためになるようにSQLクエリを変更する方法Aは= [2、3]我々はA = [1、3]のための

exam_id task variant 
    1   1  2 
    1   2  3 

になるだろう= [A1、A2]:

exam_id task variant 
    1   1  a1 
    1   2  a2 

6つの異なるタスクを持って、私は取得する必要があり、アレイ[1,2,2,2,3,4]

exam_id task variant 
    1   1  1 
    1   2  2 
    1   3  2 
    1   4  2 
    1   5  3 
    1   6  4 
+0

たとえば、(2-3と4-7のように)複数のレンジャーを持つことができます。そして、この範囲からvariant = min/maxのすべての行を取得する必要がありますか?私は正しく理解した? –

+0

@OtoShavadze、私は一定の範囲(1-4)を持っていますが、私は多くのバリアント数を持つ配列を持っています。例えば、[1,2,2,2,3,4]です。今度は、各タスクについて、 'variant = variant_from_variants'という行を取得したいと思います。 task1については、task2に対して 'variant = variant [0]'のタスクが必要です。 'variant = variant [1]'というタスクが必要です。 – pythad

+0

'[1,2,2,2] 、3,4] '、あなたの質問を編集して私たちに見せることができます、あなたのサンプルテーブルからの望ましい出力は何ですか? –

答えて

2

あなたは何を求めているのかはわかりませんが、複数の条件を試しているようです。あなたが値のリストを求めている場合は

、試してみてください。それはあなたが達成しようとしている何か他のものがある場合

SELECT exam_id, task, variant FROM tasks WHERE exam_id=1 and variant>1 and variant<10 

SELECT exam_id, task, variant FROM tasks WHERE exam_id=1 and variant in (2,3) 

あなたは範囲を取得する方法を求めている場合明確にしてください

+0

はい、複数の条件で処理する必要があるようですが、バリアント配列をマップして、配列内の各バリアントに対してクエリを実行しないようにする方法です。私はtask1をvariant1、次にtask2をvariant2とすることができます。私のvariants_array = [variant1、variant2]は2つの別々のクエリです。 variants_arrayの対応するバリアントを持つタスクに、各タスクを単一のクエリでどのようにマップすることができますか?出来ますか? – pythad

関連する問題