[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: сложение элементов массива по ключу
Kumirska
Ребят,не могу понять как мне просуммировать рейтинг сотрудников из таблицы works по полю otdel,равному id отдела из таблицы otdel
	

$res = mysql_query("SELECT id,title,names FROM otdel",$db);
$row = mysql_fetch_array($res);


do
{

$ort = mysql_query("SELECT reiting FROM works WHERE otdel = 'row[id]'",$db);

$fin = mysql_fetch_array($ort);

$summa_r = array_sum($fin);

echo "<br>Общий рейтинг равен - ".$summa;

}

while($row = mysql_fetch_array($res));







Спустя 11 минут, 53 секунды (10.05.2011 - 21:39) sharki написал(а):
Не будем пока править код =) а так почитай про функцию MYSQL SUM() и про GROUP BY
$res = mysql_query("SELECT  id,title,names FROM otdel",$db);
$row = mysql_fetch_array($res);



while($row = mysql_fetch_array($res)) {
$ort = mysql_query("SELECT reiting FROM works WHERE otdel = '".$row[id]."'",$db);

$fin = mysql_fetch_array($ort);

$summa_r = array_sum($fin);

echo "<br>Общий рейтинг равен - ".$summa;

}

Спустя 2 минуты, 15 секунд (10.05.2011 - 21:42) sharki написал(а):
Только вот непонятно где что, идет пересечении переменных $row и $res

Спустя 2 минуты, 8 секунд (10.05.2011 - 21:44) Gradus написал(а):
$fin = mysql_fetch_array($ort);
$summa_r = array_sum($fin);

нелохо не плохо, учитывая что другой mysql_fetch всё таки использовался в цикле :)
видимо копипаст)

Спустя 10 минут, 4 секунды (10.05.2011 - 21:54) Kumirska написал(а):
спасибо! вразумил=) почитал про ORDER BY,понял что запрос к базе можно не делать было а отсортировать по номерам отдела сразу! большое спасибо за содействие sharki!!!

Спустя 39 минут, 50 секунд (10.05.2011 - 22:34) Kumirska написал(а):
не,я не копипастил если обо мне речь) я почитал и профильтровал информацию! читал про сложение массивов сегодня впервые,
понимаю что как сказано в "курсе реалибитации после Попова" использовать accos лучше вместо array в данном случае,также знаю что не поодерживаете цикл do while,тоже надо было заменить =) ну и догадываюсь что использовать обращение к базе в цикле тоже очень по-дилетантски,но всё же я пока и не считаю себя продвинутым! может это пока,но плагиатом не увлекаюсь!!!

Спустя 9 часов, 58 минут, 34 секунды (11.05.2011 - 08:32) linker написал(а):
Всего делов, тебе осталось немного поправить данный запрос, чтобы получить названия отделов
SELECT SUM(`reiting`) FROM `works` WHERE GROUP BY `otdel`


Спустя 1 час, 55 минут, 12 секунд (11.05.2011 - 10:27) Kumirska написал(а):
Цитата (linker @ 11.05.2011 - 05:32)
SELECT SUM

Цитата (linker @ 11.05.2011 - 05:32)
Всего делов, тебе осталось немного поправить данный запрос, чтобы получить названия отделов
SELECT SUM(`reiting`) FROM `works` WHERE GROUP BY `otdel`


Спасибо, linker , за очень полезную идею!!! Почитал про SQL SUM(), очень удобная вещь smile.gif

Спустя 1 час, 7 минут, 18 секунд (11.05.2011 - 11:35) Kumirska написал(а):

$ort = mysql_query("SELECT SUM(reiting) as sum_r FROM works WHERE id GROUP BY title",$db);
$fin = mysql_fetch_array($ort);
while ($fin = mysql_fetch_array($ort))
{
echo $fin['sum_r'];
}


Отсортировал по тайтлам! код (без лишней информации) получился примерно таким! всё работает,всем спасибо Большое! ;)

Спустя 2 часа, 55 минут, 28 секунд (11.05.2011 - 14:30) Gradus написал(а):
господя :) Зачем mysql_fetch_array два раза ? он же вам первую запись не будет показывать и лучше использовать assoc.И что это за WHERE id пустое ?
$ort = mysql_query("SELECT SUM(reiting) as sum_r FROM works GROUP BY title",$db);
while ($fin = mysql_fetch_assoc($ort))
{
echo $fin['sum_r'];
}

Спустя 2 дня, 8 часов, 44 минуты, 5 секунд (13.05.2011 - 23:14) Kumirska написал(а):
не гневайся Gradus ! я все исправлю как ты сказал=) спасибо !


_____________
никому не дано знать абсолютной истины, ибо понятия, которыми мы оперируем, сами по себе относительны
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.