Мне нужно собрать метод, который позволит мне количественно определить, сколько полей в строке было заполнено пользователем.
Например:
User Name Age Country Gender Height 1 Mike 34 USA Male 6 2 Bill 23 CA 5 3 Jane 31 USA
В приведенном выше примере я хотел бы запросить базу данных и вернуть значение, которое будет соответствовать степени завершения записи пользователя. Такие как:
User 1 = 100% complete User 2 = 80% complete User 3 = 60% complete
Интересно, нужно ли это делать через SQL-предложения или если через PHP SQL-функции можно запросить БД и рассчитать степень завершения.
Любые предложения, как это сделать? Я использую PHP 5 (codeigniter) и SQL 5.0.77, но любая дорожная карта была бы весьма признательна.
$result = mysql_query('SELECT * FROM `MyTable`'); while($row = mysql_fetch_row($result)){ $empty_count = 0; $count = count($row); for($i = 0; $i < $count; $i++) if($row[$i] === '' || $row[$i] === 'NULL') $empty_count++; echo 'User '.$row[0].' = '.((int)(100*(1-$empty_count/($count-1)))).'% complete'; }
select User, ( case Name when '' then 0 else 1 end + case when Age is null then 0 else 1 end + case Country when '' then 0 else 1 end + case Gender when '' then 0 else 1 end + case when Height is null then 0 else 1 end ) * 100 / 5 as complete
Используйте этот случай в соответствии с тем, что означает никакая информация: пустой или пустой.
я думаю, что это было бы лучше решено в php, где вы создаете функцию, которая определяет имена столбцов и присваивает вес каждому, а затем вычисляет% complete на основе данных, полученных из db, поэтому имя может рассчитывать на 20% и возраст может рассчитывать на 5% и т. д., а столбцы и определения веса могут даже храниться извне в файле xml, так что кто-то другой может играть с процентами и не нуждается в программисте для настройки требований