PHP MYSQL PDO SUM столбцов


Answers

Вы можете использовать SUM() без явной группировки строк, потому что, если вы используете групповую функцию в инструкции, не содержащей предложения GROUP BY, она эквивалентна группировке по всем строкам.

Если, однако, вы хотите использовать функцию SUM() для чего-то более сложного, вам необходимо сгруппировать свои строки, чтобы сумма могла работать на то, что вы хотите.

Если вы хотите получить несколько сумм в одном из операторов, например, чтобы получить дистанцию ​​для всех пользователей одновременно, вам нужно сгруппировать строки в явном виде:

$res1 = $db->prepare("
    SELECT
        SUM(distance) AS distance,
        user_id
    FROM trip_logs WHERE status = '2'
    GROUP BY user_id
");
$res1->execute();
while ($row = $res1->fetch(PDO::FETCH_ASSOC))
{
    echo "user $row[user_id] has runned $row[distance] km.\n";
}

Это вернет сумму расстояний пользователем , а не для всех пользователей одновременно.

Question

Я новичок в php, и я искал последний час и прочитал всю документацию, которую мог найти, и ничего не помогает. У меня есть таблица с множеством строк данных. Я пытаюсь выбрать один столбец из всей таблицы и добавить их все вместе. Вот что я получил. Все это говорит мне, сколько строк есть, которые соответствуют моему запросу, а не общая сумма столбца, который я хочу. Любая помощь приветствуется.

$res1 = $db->prepare('SELECT sum(distance) FROM trip_logs WHERE user_id = '. $user_id .' AND status = "2"');
$res1->execute();
$sum_miles = 0;
while($row1 = $res1->fetch(PDO::FETCH_ASSOC)) {
$sum_miles += $row1['distance'];
}
echo $sum_miles;