加入ids与总和

时间:2011-02-22 02:09:55

标签: php mysql inner-join

我有一个表table1,其中包含列id和名称。我还有一个表table2,其中包含table1_id和num列。我要做的是获取一个php数组,其中包含一个关联数组,其中包含名称和相应数字的总和。现在我正在尝试使用foreach循环来遍历table1的id并执行内部联接。我该怎么做?

2 个答案:

答案 0 :(得分:1)

对于查询,您可以使用JOIN和子查询,该子查询按table1_id对table2进行分组,并使用GROUP BY计算总和。要将数据转换为关联数组,请使用mysql_fetch_assoc

$sql = "SELECT t.id, t.name, g.SumNum
    FROM table1 t
      LEFT JOIN (
        SELECT table1_id, SUM(num) SumNum
        FROM table2
        GROUP BY table1_id 
      ) g ON t.id = g.table1_id";

$result = mysql_query($sql);

while ($row = mysql_fetch_assoc($result)) {
    echo $row["id"];
    echo $row["name"];
    echo $row["SumNum"];
}

mysql_free_result($result);

答案 1 :(得分:0)

$query = "
    SELECT 
      table1.name, 
      SUM(table2.num) AS `sum`
    FROM
      table1
    LEFT OUTER JOIN
      table2
    ON
      table1.id = table2.table1_id
    GROUP BY 
      table1.id
";

$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
  $array[] = $row;
}

print_r($array);