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