MySQL のみを使用して、3 つの質問 ID を選択し、それらを単一の挿入ステートメントの列データとして使用するにはどうすればよいでしょうか。
現在、次のステートメントを使用して、質問テーブルから 1 つのランダムなエントリを選択することにより、ゲーム テーブルに新しい行を挿入しています。
現在のテーブル:
-------------------------------
| game | user_id | question_id |
-------------------------------
| 1 | 1 | 10 |
現在の声明:
INSERT INTO game (user_id, question_id)
SELECT u.id as user_id, q.id as question_id
FROM user u, question q
WHERE u.id =:uid
AND q.category = :category
ORDER BY RAND()
LIMIT 1
ゲーム テーブル: 複数選択できるように列 opt_1-3 を追加しました
-------------------------------------------------------
| game | user_id | question_id | opt_1 | opt_2 | opt_3 |
-------------------------------------------------------
| 1 | 1 | 10 | 5 | 12 | 80 |
^ ^ ^
alternative wrong answers
これは、結果を反復処理し、2 つのクエリを使用して、PHP で実現できます。
SELECT id FROM question
WHERE category = :category
ORDER BY RAND()
LIMIT 3
$opts = array();
foreach($result as $r){
$opts[] = $r->id;
}
INSERT INTO game (user_id, question_id)
SELECT u.id as user_id, q.id as question_id,
// add the following line to the query posted previously
$opt[0] AS opt_1, $opt[1] AS opt_2, $opt[2] AS opt_3
...
純粋に MySQL を使用して同じ結果を達成できるかどうかを知りたいです。