Сумиране на резултатите върнати от Count с една заявка..

kulov

Registered
Здравейте, в момента имам 1 заявка, която брои резултати (Count), след това връща вече стойностите и ги презаписваме в едно поле в базата данни, след това втора заявка прави същото само дето сумира вече обработените резултати от миналата заявка..

как може това да стане с една заявка тоест да сумира (SUM) резултатите върнати от броенето (COUNT) в една заявка всичко..
 
Дай малко повече подробности, за това ти решение.
Какво брои точно заявката? От няколко таблици ли брои резултатите, свързани ли са (ако са повече таблици) по някакво поле?
 
направо ето кода как е в момента:

PHP:
$qSelectResults="SELECT `id`, count(`main_url2`) AS `count` FROM `".$term2."_clipboard` GROUP BY `main_url2`";
	$qSelectResultsResult=mysql_query($qSelectResults);
					
				while($qSelectResultsResultRow=mysql_fetch_assoc($qSelectResultsResult)) {
$qUpdateResults="UPDATE `".$term2."_clipboard` SET `results` = '$qSelectResultsResultRow[count]' WHERE `id` = '$qSelectResultsResultRow[id]'";
					$qUpdateResultsResult=mysql_query($qUpdateResults) or die(mysql_error());
						
$qSelectSum="SELECT `id`, SUM(`results`) AS `sum` FROM `".$term2."_clipboard` WHERE `id` = '$qSelectResultsResultRow[id]' GROUP BY `main_url2`";
$qSelectSumResult=mysql_query($qSelectSum) or die(mysql_error());
						
while ($qSelectSumResultRow=mysql_fetch_assoc($qSelectSumResult)) {
mysql_query("UPDATE `".$term2."_clipboard` SET `results` = '$qSelectSumResultRow[sum]' WHERE `id` = '$qSelectSumResultRow[id]'") or die(mysql_error());
}
}
 
kulov каза:
направо ето кода как е в момента:

PHP:
$qSelectResults="SELECT `id`, count(`main_url2`) AS `count` FROM `".$term2."_clipboard` GROUP BY `main_url2`";
	$qSelectResultsResult=mysql_query($qSelectResults);
					
				while($qSelectResultsResultRow=mysql_fetch_assoc($qSelectResultsResult)) {
$qUpdateResults="UPDATE `".$term2."_clipboard` SET `results` = '$qSelectResultsResultRow[count]' WHERE `id` = '$qSelectResultsResultRow[id]'";
					$qUpdateResultsResult=mysql_query($qUpdateResults) or die(mysql_error());
						
$qSelectSum="SELECT `id`, SUM(`results`) AS `sum` FROM `".$term2."_clipboard` WHERE `id` = '$qSelectResultsResultRow[id]' GROUP BY `main_url2`";
$qSelectSumResult=mysql_query($qSelectSum) or die(mysql_error());
						
while ($qSelectSumResultRow=mysql_fetch_assoc($qSelectSumResult)) {
mysql_query("UPDATE `".$term2."_clipboard` SET `results` = '$qSelectSumResultRow[sum]' WHERE `id` = '$qSelectSumResultRow[id]'") or die(mysql_error());
}
}
Аз пак малко не мога да разбера какво става, за това първо ще стрелна наслуки с отговора
SELECT `id`, count(`main_url2`) AS `count`, SUM(`results`) AS `sum` ....
и пак да попитам
две съвсем еднакви заявки, един и същ ъпдейт, само дето веднъж записваш сумата, а другия път броя? Някак си няма смисъл, особено след като презаписваш стойностите :idea:
 
е там е работата.. само дето втората заявка сумира вече презаписания брой.. затова идеята е това сумиране да стане с една заявка а не първо да брои, да записва и чак след това тоя брой да се сумира..
 
PHP:
$qSelectResults="SELECT id,SUM(`count`) FROM ( SELECT `id`, count(`main_url2`) AS `count` FROM `".$term2."_clipboard` GROUP BY `main_url2` )";
Това е най-лесния вариант, но ако постнеш структурата, няколко записа и желания от теб резултат, все ми се струва че може да структурираш базата по-добре и да ти е по-лесно за напред :idea:
 
Само дето съм забравил накрая AS t :)
т.е. да стане
$qSelectResults="SELECT id,SUM(`count`) FROM ( SELECT `id`, count(`main_url2`) AS `count` FROM `".$term2."_clipboard` GROUP BY `main_url2` ) AS t";
 
Не връща правилни резултати.. нещо не се получава така..

PHP:
$qSelectResults="SELECT id,SUM(`count`) FROM ( SELECT `id`, count(`main_url2`) AS `count` FROM `".$term2."_clipboard` GROUP BY `main_url2` ) AS t";

$qSelectResultsResult=mysql_query($qSelectResults) or die(mysql_error());
						while($qSelectResultsResultRow=mysql_fetch_assoc($qSelectResultsResult)) {
mysql_query("UPDATE `".$term2."_clipboard` SET `results` = '$qSelectSumResultRow[count]' WHERE `id` = '$qSelectSumResultRow[id]'") or die(mysql_error());
}
 
Сигурен ли си? Пусни селект-а в phpMyAdmin-а или каквото ползваш и виж резулатати. Няма причина да се различават :idea:
 
А като пуснеш заявката [sql]SELECT id,SUM(`count`) FROM ( SELECT `id`, count(`main_url2`) AS `count` FROM `".$term2."_clipboard` GROUP BY `main_url2` ) AS t[/sql] какви резултати ти връща?
Като въртиш цикъла, сложи по един var_dump() и виж какво ти връща?
Мен ми свършиха идеите :idea:
 

Back
Горе