Соедините идентификаторы с суммами - PullRequest
2 голосов
/ 22 февраля 2011

У меня есть таблица table1 с столбцами id и name. У меня также есть таблица table2 со столбцами table1_id и num. То, что я хочу сделать, это получить массив php, который содержит ассоциативный массив с именем и суммой соответствующего числа. Сейчас я пытаюсь использовать цикл foreach для циклического перебора идентификаторов table1 и выполнения внутреннего соединения. Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 22 февраля 2011

Для запроса вы можете использовать JOIN с подзапросом, который группирует table2 по table1_id и вычисляет сумму, используя 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);
0 голосов
/ 22 февраля 2011
$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);
...