2013-09-25 5 views
0

Мне нужно сделать некоторую математику, и я не могу найти способ сделать это.Любые идеи для PHP-кода для этого?

У меня есть следующая таблица, в результате этого запроса:

SELECT materii.id, 
     materii.materie, 
     GROUP_CONCAT(note.note) AS note, 
     GROUP_CONCAT(DISTINCT teza.`teza`) AS teza 


FROM materii 
LEFT JOIN teza ON materii.id = teza.id_materie 
LEFT JOIN note ON materii.id = note.id_materie 
LEFT JOIN elevi ON note.id_elev = elevi.cod_elev 
LEFT JOIN luni ON note.`luna_nota`=luni.`id` 
WHERE elevi.`cod_elev` = 1 AND luna_nota = 9 
GROUP BY materii.id, materii.materie 
ORDER BY materii.materie 

table

мне нужно сделать что-то вроде:

$notele = mysql_query($pentrumedie) 
       or die("Nu am gasit note in baza de date"); 
$numar_note = mysql_num_rows($notele); 
if($numar_note==0) 
{ 

} 
else 
{ 
    while($rand2=mysql_fetch_array($notele)) 
    {  
     $note1 = ($rand2['notele']/$numar_note); 
     $medie_septembrie = ($note1/$cate_note_sunt); 
    } 
} 

мне нужно сделать что-то подобное для всех «примечание», но $ rand2 ['notele'] должно быть их суммой, если есть больше «примечания», а если есть значение для «теза», то математическая формула должна быть:

(($rand2['notele']/$numar_note) * 3 + teza)/4 

Я пробовал некоторые функции, но ни одна из них не работает .... Любые идеи? Благодаря!!!

+4

Cristal ясно ... –

+0

@Ruben если да, то помогите мне, пожалуйста? благодаря! –

+0

Почему вы не используете агрегированные функции SUM() и COUNT() в вашем SQL-запросе? –

ответ

2

вы можете попробовать немного измениться ваш SQL заявление

SELECT materii.id, 
    materii.materie, 
    SUM(note.note)/COUNT(note.note) AS medie, 
    GROUP_CONCAT(DISTINCT teza.`teza`) AS teza 
FROM materii 
LEFT JOIN teza ON materii.id = teza.id_materie 
LEFT JOIN note ON materii.id = note.id_materie 
LEFT JOIN elevi ON note.id_elev = elevi.cod_elev 
LEFT JOIN luni ON note.`luna_nota`=luni.`id` 
WHERE elevi.`cod_elev` = 1 AND luna_nota = 9 
GROUP BY materii.id, materii.materie 
ORDER BY materii.materie 

И в PHP использование что-то вроде

$medii = array(); 
while($rand = mysql_fetch_assoc($notele)) 
{ 
    if($rand["teza"] == "" || $rand["teza"] == NULL) 
    { 
    $medii[] = array("materie" => $rand["materie"], 
        "medie" => $rand["medie"]); 
    } 
    else 
    { 
    $medii[] = array("materie" => $rand["materie"], 
        "medie" => ((float)$rand["medie"]*3 + (float)$rand["teza"])/4); 
    } 
} 
var_dump($medii); 
+1

Я сейчас пытаюсь и вернусь! Вы, кажется, румынский, так что «Multumesc»! –

+0

это, похоже, выводит: «0 => array (size = 2) 'materie' => null 'medie' => null" Но если я тестирую запрос, он отображает данные в таблице .... I интересно, почему ... –

+0

попробуйте сейчас. Я сделал ошибку внутри. замените $ notele на $ rand внутри цикла whlie. И вы должны подумать о том, чтобы изменить функции mysql_ * на функции mysqli_, как сказал @DarkBee. – beniamin

Смежные вопросы