2010-09-16 3 views
1

J'ai du code qui délivre des données dans des tables html. J'essaye d'avoir une colonne qui montre le nombre total de réponses pour ces questions spécifiques (définies par intQAID). Puisque $ result est une requête définie dans le même script php, comment puis-je exécuter une seconde requête pour lancer un 'mysql_num_rows' afin de calculer le nombre de réponses à la question?Requête SQL pour calculer le nombre d'occurrences d'une autre requête?

$result = mysql_query("SELECT * FROM tblQA WHERE cCategory = 'Football' AND (TO_DAYS(CURDATE()) - TO_DAYS(dPostDateTime) < 1) ORDER BY dPostDateTime DESC, intQAID DESC"); 


while($row = mysql_fetch_array($result)) 
{ 
echo "<tr>"; 
echo "<td>" . $row['intQAID'] . "</td>"; 
echo "<td>" . $row['cUsername'] . "</td>"; 
echo "<td>" . $row['dPostDateTime'] . "</td>"; 
echo "<td>" . Num of Responses . "</td>"; 
echo "<td><a href=answer.php?id=" . $row['intQAID'] . ">" . $row['cBody'] . "</a></td>"; 
echo "</tr>"; 
} 
echo "</table>"; 

Répondre

1

Ne connaissant pas votre structure, cela fait un peu de conjecture.

SELECT *, (SELECT count(*) 
      FROM answers_table at 
      WHERE at.intQAID = tqa1.intQAID) as answercount 
FROM tblQA tqa1 
WHERE cCategory = 'Football' 
    AND (TO_DAYS(CURDATE()) - TO_DAYS(dPostDateTime) < 1) 
ORDER BY dPostDateTime DESC, intQAID DESC"); 

Puis vous référencez simplement le $row['answercount'] où vous voulez l'afficher.

+0

A travaillé comme un charme, merci Premiso !!! – BigMike

0

Existe-t-il une raison pour utiliser SELECT *? Voici une requête qui n'utilise pas de sous-sélection. Rejoignez la seconde table, choisissez les colonnes dont vous avez besoin et placez-les dans la clause GROUP BY et remplacez la *.

SELECT a, b, COUNT(fk_question_id) AS responseCount FROM tQuestions 
LEFT JOIN tAnswers 
    ON fk_question_id = question_id 
GROUP BY a, b 

Mise à jour: Utilisez une jointure gauche, et compter les occurences de la clé étrangère pour obtenir des résultats sans réponses.

Questions connexes