2017-05-05 39 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個相應任務的變體。

如何更改SQL查詢,以便對變型的陣列A = [2,3]我們會得到

exam_id task variant 
    1   1  2 
    1   2  3 

爲A = [1,3]:

exam_id task variant 
    1   1  1 
    1   2  3 

對於A = [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),你需要得到所有行',其中變量=最小值/最大值從這個ranges'?我正確理解? –

+0

@OtoShavadze,我有一個恆定的範圍(1-4),但是我有變體的許多數字,例如一個數組:[1,2,2,2,3,4]。現在爲每個任務我想獲得行'variant = variant_from_variants'。對於任務1,我想要一個任務'變體=變體[0]',任務2我想要一個任務變體=變體[1]'等等 – pythad

+0

假設你有這個數組''1,2,2,2 ,3,4]',你可以編輯你的問題,並告訴我們,你的樣本表會輸出什麼? –

回答

2

我不知道你在問什麼,但看起來像你想和多個條件。

如果你所要求的值的列表,請嘗試:

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

如果你問如何獲得一個範圍:

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

如果是別的東西,你要完成請澄清

+0

是,它看起來像它必須與多個條件進行,但如何我映射變量數組,這樣我不爲陣列中的每個變種做一個查詢。我可以用TASK1 VARIANT1,然後用VARIANT2,那裏有我variants_array = [VARIANT1,VARIANT2],這是2次獨立的查詢TASK2。如何將每個任務映射到單個查詢中variants_array中具有相應變體的任務。可能嗎? – pythad