Задавайте вопросы, мы ответим
Вы не зашли.
Есть таблица успеваемости us с полями matematika, fizika, istoriya ...и т.д
Небходимо вывести название поля для тех записей, где в каком-то одном поле значение равно 3, и в то же время в остальных полях больше 3.
Подскажите пожалуйста!
Неактивен
Не очень удачная реализация таблицы — в случае, когда у человека нет оценки по
соответствующему предмету, — приходится ставить NULL. А при добавлении нового
предмета — приходится обновлять все строки таблицы, тоже не очень хорошо.
Ну и из-за такой реализации прийдется писать сложную конструкцию для выборки:
Неактивен
Да я вобщем так и сделал (тупо) :
$sql7 = mysql_query("SELECT * FROM us1 where (
(klass='$usklass')and
(((rus=3)and (liter>3) and(matem>3) and (okr_mir>3) and(musika>3) and(iso>3) and (techn>3) and(fizra>3))
or
((liter=3)and (rus>3) and(matem>3) and (okr_mir>3) and(musika>3) and(iso>3) and (techn>3) and(fizra>3))
or
((rus>3)and (liter>3) and(matem=3) and (okr_mir>3) and(musika>3) and(iso>3) and (techn>3) and(fizra>3))
or
((rus>3)and (liter>3) and(matem>3) and (okr_mir=3) and(musika>3) and(iso>3) and (techn>3) and(fizra>3))
or
((rus>3)and (liter>3) and(matem>3) and (okr_mir>3) and(musika=3) and(iso>3) and (techn>3) and(fizra>3))
or
((rus>3)and (liter>3) and(matem>3) and (okr_mir>3) and(musika>3) and(iso=3) and (techn>3) and(fizra>3))
or
((rus>3)and (liter>3) and(matem>3) and (okr_mir>3) and(musika>3) and(iso>3) and (techn=3) and(fizra>3))
or
((rus>3)and (liter>3) and(matem>3) and (okr_mir>3) and(musika>3) and(iso>3) and (techn>3) and(fizra=3)))
)
order by fam" ,$db);
$res7 = @mysql_num_rows($sql7);
а потом из асс массива циклом вывожу то, что надо..
while ($tablerows = mysql_fetch_row($sql7))
{вывод нужного...- в смысле значения полей
===
но надо вывести не ЗНАЧЕНИЕ ПОЛЯ, а имено НАЗВАНИЕ ПОЛЯ у записи, где есть только одна тройка, а остальные - четверки и пятерки.
Похоже не сделать так...а переделывать структуры базы - это все снова...неохот
======
Получилось через пхп )
(конечно через жоп... , но работает)
1) объявил массив, в который занес названия полей:
# Поля предметов в таблице начанаются с номера 4
$p=array(
4 => "русский",
5 => "литература",
6 => "математика",
7 => "окр_мир",
8 => "музыка",
9 => "ИЗО",
10 => "Технология",
11 => "Физкультура"
);
2) проверяю значения полей, и если значение поля == 3 , то вывожу p[i]:
while ($tablerows = mysql_fetch_row($sql7))
{
for ($i = 4; $i <= 11; $i++)
{
if ($tablerows[i]==3)
{
echo "$p[i]";
}
}
}
правда что-то цикл не работает, поэтому пришлось по тупому:
if ($tablerows[4]=="3")
{echo " ($p[4]) ";}
if ($tablerows[5]=="3")
{echo " ($p[5]) ";}
и т.д.
====
ВСЕМ СПАСИБО!
Неактивен