Je développe un système qui sélectionne les questions d'une base de données pour générer un test/examen.CHOISIR des résultats 'aléatoires' avec des paramètres définis
Chaque question a un ensemble 'type de question' ('q_type'). J'ai une base de données de questions et j'ai besoin de sélectionner 4 questions, chacune avec un 'q_type' différent.
La requête de base pour sélectionner 4 questions aléatoires à l'heure actuelle est:
SELECT * FROM questions ORDER BY RAND() LIMIT 0,4
Cela ne prend évidemment pas en compte le fait que chaque question devrait avoir un autre « type_file ».
Je voudrais être en mesure de faire quelque chose qui suit cette logique (je besoin de quelque chose pour remplir les crochets):
SELECT * FROM questions WHERE ['q_type' is DISTINCT] ORDER BY RAND() LIMIT 0,4
J'ai essayé d'utiliser GROUP BY « type_file », mais qui donne tout simplement la première question pour chaque 'q_type', pas une question différente de ce type à chaque fois.
Toute aide serait super, car je suis complètement perplexe pour le moment (je travaille avec une boucle PHP surchargée qui interroge simplement le DB 4 fois, avec un WHERE 'q_type'! = XX mis à jour à chaque fois).
Merci pour toute aide!
belle saulposel question, j'attends aussi pour toute solution par requête .. :) –
Pour N = 4, vous pouvez vous en sortir avec 4 imbriquée SELECT de. Sélectionnez la 2ème question WHERE q_type! = 1st.q_type, sélectionnez la 3ème question WHERE q_type! = 2nd.q_type ET q_type! = 1st.q_type, etc. Evidemment non-scalable. – MSalters
Je suis d'accord. Comme il ne semble pas y avoir d'option mySQL pure, vous pouvez soit faire 4 requêtes imbriquées comme mentionné ci-dessus, soit faire une boucle mysql_fetch_assoc() comme suggéré par Fanis. C'est purement une décision de performance/échelle. – saulposel