total_starsここにコードがあります、それは私がやろうとしていることの最良の説明です:
$total_stars = array();
$query = "SELECT items_id FROM items";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
$item_id = $row['items_id'];
$sql = "Select Count(item_id) FROM ratings WHERE item_id = '{$item_id}'";
$result = mysql_query($sql);
$total_stars[] = mysql_fetch_array($result);
}
// To see the output by entering the URL I want to print_r
print_r($total_stars);
// In the end, I am trying to JSON encode this and will later output in Java for Android
print(json_encode($total_stars));
(混乱しないように、items_idはitemsテーブルにあり、item_id('s'なし)は評価テーブルにあります)
今、平易な英語で:
アイテムテーブルの各行をループしています。その際、各ループで「評価」と呼ばれる別のテーブルを参照し、そのアイテムの評価の数を取得しています。
たとえば、配列を(65、43、55、43など)のように見せたいとします。もちろんサンプル番号。ただし、それぞれは、テーブル内の各アイテムの評価の合計量を表します。print__rでループ内のSQLステートメントの結果を表示するにはどうすればよいですか?
JOINを使用しようとしている更新されたコード:
$query = "SELECT items_id FROM items";
$q = 'SELECT
items.items_id,
COUNT(ratings.item_id) AS rate
FROM `items`
LEFT JOIN ratings ON (ratings.item_id = items.items_id)
GROUP BY items_id';
$result = mysql_query($q);
while ($row = mysql_fetch_array($result)) {
$total_stars = mysql_fetch_array($result);
}
print_r($total_stars);
print_rはこれを出力します:配列([0] => 783 [items_id] => 783 [1] => 0 [rate] => 0)