|
|
|
| как посчитать сумму одного столбца таблицы по двум критериям?
$master = "SELECT * FROM master ORDER BY id";
$master_query = mysql_query("$master");
while ($master_select = mysql_fetch_assoc($master_query))
{
echo $master_select['name'];
$summa = "SELECT * FROM visit WHERE date= '".$day."' AND id_master= '".$master_select['id']."'";
$summa_query = mysql_query("$summa ");
while ($summa_select = mysql_fetch_assoc($summa_query))
{
$s += $summa_select['summa'];
echo $s;
}
}
}
|
вот так он выдает всю прогрессию суммы, а мне надо конечную цифру | |
|
|
|
|
|
|
|
для: Bvz
(14.09.2009 в 12:57)
| |
SELECT SUM(`summa`) FROM `visit` WHERE `date` = '">$day."' AND `id_master` = '".$master_select['id']."' GROUP BY `id_master`"
|
может так? | |
|
|
|
|
|
|
|
для: Bvz
(14.09.2009 в 12:57)
| | Попробуйте этот запрос:
<?
$q = "SELECT `master`.*, SUM(`visit`.`summa`)
FROM `master`
LEFT JOIN `visit`
ON `visit`.`id_master`=`master`.`id`
WHERE `date`='".$day."'
GROUP BY `master`.`id`";
|
| |
|
|
|
|
|
|
|
для: Саня
(14.09.2009 в 13:07)
| | а как потом на php результат вывести?
делаю
$master = "SELECT * FROM master ORDER BY id";
$master_query = mysql_query("$master");
while ($master_select = mysql_fetch_assoc($master_query))
{
echo $master_select['name'];
$summa = "SELECT SUM(summa) FROM visit WHERE date= '".$day."' AND id_master= '".$master_select['id']."'";
$summa_query = mysql_query("$summa ");
$summa_select = mysql_fetch_assoc($summa_query);
{
echo $summa_select['summa'];
}
}
}
|
выводит
[quote]Resource id #13[/quote] | |
|
|
|
|
|
|
|
для: Bvz
(14.09.2009 в 13:42)
| |
<?
$q = "SELECT `master`.*, SUM(`visit`.`summa`)
FROM `master`
LEFT JOIN `visit`
ON `visit`.`id_master`=`master`.`id`
WHERE `date`='".$day."'
GROUP BY `master`.`id`";
$query = mysql_query($q);
if ( $query ) {
while ( $fetch = mysql_fetch_assoc($query) ) {
print_r($fetch);
}
}
|
| |
|
|
|
|
|
|
|
для: Саня
(14.09.2009 в 14:11)
| | как вместо print_r($fetch); вывести сумму?
попробую снова задачу поставить, есть таблица master в ней 2 поля id и name, т.е идентификатор и имя мастреа, есть 2-я таблица visit в ней много полей в частность id_master, summa и date соотетсвтенно идентификатор мастера, некое число и дата посещения, как сделать, чтоб отобразить всех мастеров по порядку, плюс рядом общую сумму чисел, которые были записаны в определенную дату? | |
|
|
|
|
|
|
|
для: Bvz
(14.09.2009 в 22:28)
| | для этого надо понять, что выводит print_r() | |
|
|
|
|
|
|
|
для: Trianon
(14.09.2009 в 22:47)
| | он выводит кучу подобных массивов
Array ( [id] => 1 [speciality] => 1 [name] => Иван [SUM(`visit`.`summa`)] => 2400.00 )
а мне надо чтоб он выводил
Иван 2400.00
попробую снова задачу поставить, есть таблица master в ней 2 поля id и name, т.е идентификатор и имя мастреа, есть 2-я таблица visit в ней много полей в частность id_master, summa и date соотетсвтенно идентификатор мастера, некое число и дата посещения, как сделать, чтоб отобразить всех мастеров по порядку, плюс рядом общую сумму чисел, которые были записаны в определенную дату? | |
|
|
|
|
|
|
|
для: Bvz
(14.09.2009 в 22:54)
| | нужно использовать easy_print_r() вместо print_r() :)
только сначала её надо объявитьтак
function easy_print_r($array){
if (!is_array($array)) echo '';
else echo implode(' ', $array) ."<br/>\n";
}
|
upd// добавил ."<br/>\n" | |
|
|
|
|
|
|
|
для: heed
(14.09.2009 в 23:09)
| | чем дальше в лес, тем больше дров :) | |
|
|
|
|
|
|
|
для: Bvz
(14.09.2009 в 23:20)
| | Ну а чегоЖ)
если-бы там непонравилось что нули где-то в массивах получаются, а то вообще не понравилось что массивы получились
там в print_r() было всё показано , какие ключи у каких елементов.
Может нужно будет написать что-то вообще такое
<?
echo '<a href="delmaster.php?id='. $fetch['id']
.'">Удалить мастера</a><br/>' ."\n"
.'а зовут его '. $fetch['name'] .' и заработал он всего '
. $fetch['SUM(`visit`.`summa`)'] ."<hr/>\n";
| кстати ниже нормально предложено как заменить $fetch['SUM(`visit`.`summa`)'] напросто $fetch['summa'] | |
|
|
|
|
|
|
|
для: heed
(14.09.2009 в 23:44)
| | в целом спасибо, а вообще хотелось детально этот пример разобрать, чтоб потом не мучать форумчан подобными вопросами, поможите разобрать что и для чего? | |
|
|
|
|
|
|
|
для: Bvz
(15.09.2009 в 10:38)
| |
# перечисляем данные, которые нужно выбрать
SELECT `master`.*, SUM(`visit`.`summa`)
# из таблицы master
FROM `master`
# присоединяем данные из таблицы visit
LEFT JOIN `visit`
# критерий присоединения - совпадение идентификаторов мастера из таблиц visit и master
ON `visit`.`id_master`=`master`.`id`
# за указанный день
WHERE `date`='".$day."'
# группируем отдельно по каждому мастеру
GROUP BY `master`.`id`"
|
| |
|
|
|
|
|
|
|
для: Саня
(15.09.2009 в 11:29)
| | спасибо!!! | |
|
|
|
|
|
|
|
для: Саня
(15.09.2009 в 11:29)
| | Это некорректное описание - в принципе.
# перечисляем данные, которые нужно выбрать
SELECT `master`.*, SUM(`visit`.`summa`)
# из табличного выражения
FROM (
# к таблице
`master`
# присоединяем данные из таблицы visit
LEFT JOIN `visit`
# критерий присоединения - совпадение идентификаторов мастера из таблиц visit и master
ON `visit`.`id_master`=`master`.`id`
)
# за указанный день
WHERE `date`='".$day."'
# группируем отдельно по каждому мастеру
GROUP BY `master`.`id`"
|
Скобки, добавленные мной, можно опустить. Суть от этого не изменится. В разделе FROM указывается табличное выражение (произвольной сложности), а не одна таблица.
LEFT JOIN является не отдельным разделом, а табличной операцией. | |
|
|
|
|
|
|
|
для: Trianon
(15.09.2009 в 11:45)
| | еще раз спасибо! | |
|
|
|
|
|
|
|
для: Саня
(15.09.2009 в 11:29)
| | а если надо посчитать несколько сум нескольких столбцов | |
|
|
|
|
|
|
|
для: Bvz
(16.09.2009 в 01:12)
| | Просто перечисляйте функции SUM() с соответствующими столбцами через запятую. | |
|
|
|
|
|
|
|
для: heed
(14.09.2009 в 23:44)
| | >кстати ниже нормально предложено как заменить $fetch['SUM(`visit`.`summa`)'] напросто $fetch['summa']
Вот против этого не могу не возразить.
Делать алиас, совпадающий с именем существующего объекта - крайне неряшливо.
Во-первых, очень тяжело воспринимается человеком.
Во-вторых, могут возникнуть неоднозначности и побочные эфффекты, нарушающие планируемое поведение запроса.
Безусловно, отвлеченный алиас - только благо в подобной ситуации. | |
|
|
|
|
автор: ......... (14.09.2009 в 22:48) |
|
|
для: Bvz
(14.09.2009 в 22:28)
| | SELECT `master`.*, SUM(`visit`.`summa`) AS summa
FROM
echo $summa_select['summa']; | |
|
|
|
|
|
|
|
для: .........
(14.09.2009 в 22:48)
| | ничего подобного | |
|
|
|