суммировать и вернуть мне окончательную цифру

Тема в разделе "Базы данных", создана пользователем contive, 22 сен 2012.

Модераторы: latteo
  1. contive

    contive Постоялец

    Регистр.:
    24 апр 2009
    Сообщения:
    117
    Симпатии:
    23
    Пример.
    Есть примерно такая таблица:

    personal

    | id | name | hiredata | salary | award |
    | 1 | Ivan Ivanovich | 25.03.1998 | 800 | yes
    | 2 | Andrey Andreev | 18.06.2001 | 500 | yes
    | 3 | Victor Petechkin | 02.10.2007 | 1000 | no

    Запрос на время, которое сотрудник работает в конторе и имеет право на премию (в днях) :

    PHP:
    $dt mysql_query("SELECT `hiredata` FROM `personal` WHERE id = $employeeid AND `award`='yes'") or die(mysql_error());
    while(
    $row=mysql_fetch_array($dt)) {
    $row['hiredata'];
    $query mysql_query("SELECT DATEDIFF(NOW(),'" $row[' hiredata '] . "') as date_difference") or die(mysql_error());
    }
    while(
    $row=mysql_fetch_array($query)) {
    $livetime $row['date_difference'];
    }
    Запрос на размер оклада сотрудника (salary) который имеет право на премию (award) :

    PHP:
    $query mysql_query("SELECT `salary ` FROM `personal` WHERE id = $employeeid AND `award`='yes'" ); 
    $row mysql_fetch_row($query);
    $award $row[0];
    Теперь вот, что мне примерно нужно: взять кол-во дней, которое вернула переменная $livetime, умножить её на размер оклада сотрудника, которое вернула переменная $award. Сделать это для каждого сотрудника который имеет право на премию, суммировать и вернуть мне окончательную цифру.

    P.S. это всего лишь пример того, что мне нужно, дай Бог чтобы всем так премии считали :)
     
  2. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.401
    Симпатии:
    1.182
    Сумма по сотрудникам:
    Код:
    SELECT DATEDIFF(NOW(),`hiredata`)*`salary` FROM `personal` WHERE `award`='yes';
    
    Общая сумма:
    Код:
    SELECT sum(DATEDIFF(NOW(),`hiredata`)*`salary`) FROM `personal` WHERE `award`='yes'
    
     
    contive нравится это.
  3. contive

    contive Постоялец

    Регистр.:
    24 апр 2009
    Сообщения:
    117
    Симпатии:
    23
    Я как всегда объяснил не так, как я себе это представляю.
    sorry about that.

    Нужно вытянуть id всех сотрудников которые `award`='yes' и по очереди подставлять их id в этот запрос в переменную $employeeid:
    PHP:
    SELECT `salaryFROM `personalWHERE id $employeeid AND `award`='yes'
    выполнить if else
    PHP:
    $employeeid_i $employeeid;
    if (
    $employeeid <= 800)
    {
    $
    $employeeid_i 0.1;
    }
    else
    {
    $
    $employeeid_i 0.2;
    }
    вернуть мне результат для конкретно этого id с коэффициентом, и так по всем сотрудникам у которых `award`='yes'

    т.е. мне нужно каждому сотруднику определить его коэффициент в зависимости от его оклада, перемножить этот коэффициент на оклад, получив результаты умножений для всех сотрудников нужно их суммировать в одно число.
    как-то так %)

    решилось с помощью вложенных селектов
    latteo

    спасибо за помощь.