Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2012, 15:46   #1
BelialL
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 29
Вопрос Вывод среднего значения !

Здравствуйте! подскажите в чем ошибка? мне нужно вывести из двух таблиц имя студента и его средний бал по всем предметам
первая таблица student (id_studen,name,namber)
Вторая таблица sessia (id_predmet,id_student,ocenka) id_student из первой таблицы совпадает с id_student второй таблицы!
PHP код:
<body>
<head>
<meta http-equiv="content-type" content ="text/html; charset = cp 1251"/>
</head>

<?php
$db 
mysql_connect ("localhost","reew","123");

mysql_select_db("students",$db);

$resultat mysql_query("SELECT * FROM sessia LEFT JOIN student ON sessia.id_student=student.id_student WHERE id_student = 2 ",$db);
$myar mysql_fetch_array($resultat);
echo 
$myar['name'],"=" ;
$a=0;
$b=0;
do{
$a=$a+1;
$b$b$myar['ocenka'];
}
while (
$myar mysql_fetch_array ($resultat));
$c $b/$a;
echo 
$c;

?>

</body>
</html>
выдает ошибку
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\localhost\www\z31.php on line 12
BelialL вне форума Ответить с цитированием
Старый 21.06.2012, 15:53   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Вы не умеете вычислять среднее арифметическое?
Возьмите учебник для четвёртоко класса СОШ.
В общем случае вычисляется как:
(A(n-1)+A(n))/n.
Где n = 1...n.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 21.06.2012, 15:56   #3
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Поле id_student есть в обеих таблицах - потому MySQL теряется.
Нужно указать, из какой именно таблицы использовать поле id_student в условии WHERE:
PHP код:
 WHERE id_student 
Andkorol вне форума Ответить с цитированием
Старый 21.06.2012, 15:58   #4
BelialL
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 29
По умолчанию

Среднее арифметическое у меня вычисляется но только для одного студента
если убрать
PHP код:
WHERE id_student 
а мне надо чтоб он для студента под id 2 вычислил если я уточняю для какова студента нужно вычислить среднее арифметическое он выдает ошибку
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\localhost\www\z31.php on line 12
BelialL вне форума Ответить с цитированием
Старый 21.06.2012, 16:00   #5
BelialL
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Поле id_student есть в обеих таблицах - потому MySQL теряется.
Нужно указать, из какой именно таблицы использовать поле id_student в условии WHERE:
PHP код:
 WHERE id_student 
Спасибо все получилось
PHP код:
WHERE student.id_student 
BelialL вне форума Ответить с цитированием
Старый 21.06.2012, 16:46   #6
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Читаем мануалы по sql, функции avg и упрощаем себе жизнь
Код:
SELECT
   student.name,   
   AVG(sessia.ocenka) as ocenka
   FROM student
   LEFT JOIN sessia ON sessia.id_student=student.id_student 
   /*WHERE student.id_student = 2*/
   GROUP BY student.id_student
Cronos20 вне форума Ответить с цитированием
Старый 21.06.2012, 18:02   #7
BelialL
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 29
По умолчанию

Теперь возник другой вопрос как сделать чтобы он вывел фамилию студента с наивысшим средним значением сделал так
PHP код:
<html>
<body>
<head>
<meta http-equiv="content-type" content ="text/html; charset = cp 1251"/>
</head>

<?php
$db 
mysql_connect ("localhost","reew","123");

mysql_select_db("students",$db);

$resultat mysql_query("SELECT avg(ocenka) as sredn, name FROM sessia LEFT JOIN student ON sessia.id_student=student.id_student WHERE sessia.id_student = 1 ",$db);
$myar mysql_fetch_array($resultat);

echo 
$myar ['name'],"<br>" 
echo 
$myar ['sredn'],"<br>" 
$resultat mysql_query("SELECT avg(ocenka) as sredn, name FROM sessia LEFT JOIN student ON sessia.id_student=student.id_student WHERE sessia.id_student = 2 ",$db);
$myar mysql_fetch_array($resultat);

echo 
$myar ['name'],"<br>" 
echo 
$myar ['sredn'],"<br>" 
$resultat mysql_query("SELECT avg(ocenka) as sredn, name FROM sessia LEFT JOIN student ON sessia.id_student=student.id_student WHERE sessia.id_student = 3 ",$db);
$myar mysql_fetch_array($resultat);

echo 
$myar ['name'],"<br>" 
echo 
$myar ['sredn'],"<br>" 
$resultat mysql_query("SELECT avg(ocenka) as sredn, name FROM sessia LEFT JOIN student ON sessia.id_student=student.id_student WHERE sessia.id_student = 4 ",$db);
$myar mysql_fetch_array($resultat);

echo 
$myar ['name'],"<br>" 
echo 
$myar ['sredn'],"<br>" 

?>

</body>
</html>
но он выводит мне средние оценки всех студентов! а как сделать чтобы вывел только наименьшее??
BelialL вне форума Ответить с цитированием
Старый 21.06.2012, 18:20   #8
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от BelialL Посмотреть сообщение
как сделать чтобы он вывел фамилию студента с наивысшим средним значением
....
а как сделать чтобы вывел только наименьшее??
Так какое значение нужно..?

Примерно так:
PHP код:
SELECT avg(ocenka) as srednname 
FROM sessia 
LEFT JOIN student ON sessia
.id_student=student.id_student
GROUP BY sessia
.id_student 
ORDER BY sredn DESC 
LIMIT 1 
это если нужен наивысший средний балл, ну и ASC - если нужен наименьший.
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление среднего значения roxy7 Microsoft Office Excel 2 13.12.2011 19:41
Поиск среднего значения повторяющихся ячеек Pavel777 Microsoft Office Excel 6 15.07.2011 20:19
Excel. Отклонение от среднего значения. TheX3 Помощь студентам 1 20.11.2010 17:34
Поиск среднего значения az1983 Microsoft Office Excel 3 06.06.2010 20:22
Подсчет среднего значения stas77 Microsoft Office Excel 6 27.11.2009 20:29