Вывод названия поля с опредленным значением

kdomnin

Новичок
Вывод названия поля с опредленным значением

Никак не могу сделать:

Есть таблица успеваемости us с полями familiya,imya, matematika, fizika, istoriya ...и т.д
Небходимо вывести название поля для тех записей, где в каком-то одном поле значение равно 3, и в то же время в остальных полях больше 3.

Примерно так: (ученики с одной тройкой и показывается, по какому предмету тройка)
Иванов - matematika
Петров - istoriya
и тд...

Подскажите пожалуйста!
 

baev

‹°°¬•
Команда форума
Никак не могу сделать
— а как уже пробовали?

Тут тупым перебором условий всё выводится: WHERE (ПОЛЕ=3 AND ДРУГОЕ_ПОЛЕ>3 AND ЕЩЁ_ДРУГОЕ_ПОЛЕ>3) OR (ПОЛЕ>3 AND ДРУГОЕ_ПОЛЕ=3 AND ЕЩЁ_ДРУГОЕ_ПОЛЕ>3) …и т. д.
(Другое дело, что «по уму» надо заводить флаг «одна тройка» и обновлять его при обновлении остальных полей. Но, думаю, тут задача не такого уровня…)
 

kdomnin

Новичок
Да это понятно, я так (тупо) и сделал:
$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))
{вывод нужного...- в смысле значения полей
===
но надо вывести не ЗНАЧЕНИЕ ПОЛЯ, а имено НАЗВАНИЕ ПОЛЯ у записи, где есть только одна тройка, а остальные - четверки и пятерки.
Похоже не сделать так...а переделывать структуры базы - это все снова...неохот
 

kdomnin

Новичок
Автор оригинала: Mr_Max
[m]ref.array[/m]
Спасибо
попробую через пхп, типа так:
задам массив названий столбцов $p[] - математика, физика...
дальше проверяем все $tablerows[], и если $tablerows =3, то выводим $p - может прокатит, хотя это все-таки через жоп...

-~{}~ 01.11.09 21:07:

Получилось через пхп :)))

1) объявил массив, в который занес названия полей:

# Поля предметов в таблице начанаются с номера 4
$p=array(
4 => "русский",
5 => "литература",
6 => "математика",
7 => "окр_мир",
8 => "музыка",
9 => "ИЗО",
10 => "Технология",
11 => "Физкультура"
);
2) проверяю значения полей, и если ==3, то вывожу p:

while ($tablerows = mysql_fetch_row($sql7))
{
for ($i = 4; $i <= 11; $i++)
{
if ($tablerows==3)
{
echo "$p";
}
}
}

правда что-то цикл не работает, поэтому пришлось по тупому:

if ($tablerows[4]=="3")
{echo " ($p[4]) ";}
if ($tablerows[5]=="3")
{echo " ($p[5]) ";}
и т.д.

====
ВСЕМ СПАСИБО!
 
Сверху