1

以前にこれを行ったことがあることを知っているので、疲れ果てているに違いありませんが、どのように行ったか、またはそのスニペットを見つけることができません。「質問」と「回答」の2つのテーブルがあります。「質問」のプライマリ「id」は、「回答」の「id」でもあります。そのテーブルの「id」に基づいて「回答」を数えようとしています。

     <?php

  $query = "SELECT * FROM questions ORDER BY id DESC";

  $result = mysql_query("$query");
  while($row = mysql_fetch_array($result)){
$id = $row['id'];
    $date = $row['date'];
    $question = $row['question'];
$time = date("U");
$likes = $row['likes'];
    $query2 = "SELECT * FROM answers WHERE id = $id";
    $num_rows = mysql_num_rows($query2);
    print("<span style='font-size: .7em';><a href='qplusone.php?id=$id'>+1</a>
 - Likes:$likes</span> $question - <a href='answer.php?id=$id&pp=$time'>answer it</a>
 or <a href='answers.php?id=$id&pp=$time'>read $num_rows answers</a> 
<span style='font-size: .7em';>($date)</span><br />");
  }

  ?>
4

2 に答える 2

1

まず第一に、実行することはありません$query2。しかし、すべての行を返してそれらをカウントするよりも、単に mysql によってカウントされた行数を返すだけです。

$query2 = "SELECT count(*) FROM answers WHERE id = $id";
$result = mysql_query($q);
$row = mysql_fetch_array($result);

$count = $row['count(*)']; // $count holds the number of matching records.
于 2012-10-08T23:36:34.013 に答える
0

質問ごとの回答数を取得するには、これを行うことができます

select q.id,
       count(*) as answers
from answer a
left join questions q on q.id = a.id 
group by q.id
于 2012-10-08T23:34:04.430 に答える