2016-07-11 6 views
1

私は、質問1〜16とそれらの答えをユーザーが与え、一意のIDでグループ化したテーブルを持っています。例:mysqlの繰り返しシーケンスで空白を埋める

+--------+-----------------+--------+ 
| number | question_number | answer | 
+--------+-----------------+--------+ 
| 1  | 1    | y  | 
+--------+-----------------+--------+ 
| 1  | 2    | n  | 
+--------+-----------------+--------+ 
| 1  | 3    | y  | 
+--------+-----------------+--------+ 
| 2  | 1    | n  | 
+--------+-----------------+--------+ 
| 2  | 3    | y  | 
+--------+-----------------+--------+ 

私が必要とするのは、シーケンス内の欠損値を埋めるSELECTまたはINSERTです。したがって、 'number' 2の場合は、question_number 2を埋め込み、答えにnull値を挿入します。だから、基本的に私は、あなたがcross joinleft joinでこれを行うことができます

+1

1:1 1:2 1:3 2:1 2:3行として、あなたは2:2のヌルがないと推測していますか? – Drew

+0

私はあなたが質問の完全なシーケンスを持っているテーブルを必要とするか、またはいくつかの動的SQLが必要になると思います。 –

+0

1:1の1:9の2:1から2:8と3:1を提示した場合、1:2から1:8,2:9,3:2から3:9またはその他の暗黙のVOODOO? – Drew

答えて

1

(、私の例の場合には1〜3)を繰り返しシーケンスのギャップを埋めるしたい:あなたが提示されている

ので
select n.number, qn.question_number, q.answer 
from (select distinct number from questions) n cross join 
    (select distinct question_number from questions) qn left join 
    questions q 
    on q.number = n.number and q.question_number = qn.question_number; 
+0

だから私は同じテーブルに参加しますか? –

+0

@KristinVernon。 。 。 'cross join'は、' number'と 'question_number'のすべての組み合わせを生成することです。有効な値は元のテーブルから来ているので、はい、これは自己結合です。 –

+1

それはそれのように見えるおかげで! –

関連する問題