2016-06-07 4 views
0

Ich habe zwei Tabellen mit Kategorien und Fragen. Ich brauche Hilfe beim Schreiben einer Abfrage, um zufällige Fragen zu bekommen. Wenn es 10 Fragen gibt, wird die erste von der ersten Kategorie sein, die zweite von der zweiten Kategorie und es wird so weitergehen, bis 10 Fragen angezeigt werden können. Meine Tabellenstruktur sieht folgendermaßen aus:MySQL Abfrage für das Erhalten von zufälligen Fragen

Kategorien ID | Name

1 | php

2 | jQuery

3 | MySQL

Fragen ID | Frage | ans1 | ans2 | Catid | richtig

1 | q1 | a1 | a2 | 1 | a1

2 | q2 | a1 | a2 | 3 | a1

Die Abfrage ich habe, ist diese

select * from questions where category_id=$category_id ORDER BY RAND() LIMIT 12 
+0

dies im Grunde Problem nur eine Variation des „pro Gruppe Top-N“ ist ... –

Antwort

0

ich die Probleme mit meiner Formel gelöst. Es mag schwierig sein, aber ich löse es. Sie können versuchen ....

// Code beginnt hier

//Get maximum value of category id 
    $cid = "select * from category";//Getting category id 
    $cid = mysqli_query($con,$cid);//Run the query 
    $v = array();//Create an array 
    while($d = mysqli_fetch_array($max)){ 
     array_push($v,$d['id']);//Push all id to the array. 
    } 
    //Get single key form the array randomly with php array function array_rand(). 
    $rand = array_rand($v,1); 
    $rand = $v[$rand];//Ultimately get the random category id. 

    //Now use the category id in where clause. 
    $sql = "select * from questions where category_id=$rand LIMIT 12"; 
    $sql = mysqli_query($con,$sql); 
    while($d = mysqli_fetch_array($sql)){//$d = data 
     echo $d['id'].'. '.$d['question'].'<br>';//Display the questions randomly with multiple questions if exists. 
    } 

//-Code Dank endet.

+0

ich denke, die erste Variable nicht $ cid, ist es max $ – dwerty