Construction d'une requête
Salut, j'ai un script qui fonctionne mais que je voudrais améliorer.
A la base, j'ai un concours. Il y a 3 questions (1 point par bonne réponses). Le vainqueur est tiré au sort aléatoirement parmi ceux qui ont les 3 bonnes réponses.
Actuellement, voilà comment je procede.
Je selectionne les réponses qui valent 1 point pour le concours en cours
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
$req="SELECT DISTINCT idREPONSE FROM concours,questions,reponse
WHERE idconcours='$idconc'
AND idconcours=concours_idconcours
AND QUESTIONS_idQUESTIONS=idQUESTIONS
AND valeur_rep=1
";
$query=mysql_query($req);
//envoi dans la BDD
if (!$query)
{
?>
<br />
Erreur lors de la sélection des bonnes réponses!
<?php
echo mysql_error();
}
else
{
while($res=mysql_fetch_array($query))
{
echo $res[0]
?>
<br />
<?php
}
} |
Ensuite, je copie/colle la requete me permettant de selectionner le vainqueur. La voila
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
SELECT membre_idmembre,COUNT(*)
FROM (
SELECT DISTINCT membre_idmembre
FROM resultat, reponse
WHERE idREPONSE = REPONSE_idREPONSE
AND reponse_idreponse =xx
AND valeur_rep =1
UNION ALL SELECT DISTINCT membre_idmembre
FROM resultat, reponse
WHERE idREPONSE = REPONSE_idREPONSE
AND reponse_idreponse =xx
AND valeur_rep =1
UNION ALL SELECT DISTINCT membre_idmembre
FROM resultat, reponse
WHERE idREPONSE = REPONSE_idREPONSE
AND reponse_idreponse =xx
AND valeur_rep =1
) AS Tabx
GROUP BY membre_idmembre
HAVING count(*) =3
ORDER By rand() LIMIT 1 |
Je remplace les xx par les réponses obtenues plus haut.
Je cherche un moyen de ne plus faire çà "à la main". Je voudrais que la 2eme requete contiennent déjà les bons identifiants pour qu'ensuite, je fasse la requete dans la foulée.
Je penses à la concatenation mais j'y arrive pas.
Quelqu'un aurai-il une idée ??
Merci d'avance