Подсчет, сколько полей MySQL в строке заполнено (или пусто) - PullRequest
6 голосов
/ 17 июля 2011

Мне нужно собрать метод, который позволил бы мне количественно определить, сколько полей в строке было заполнено пользователем.

Например:

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, но любая дорожная карта будет принята с благодарностью.

Ответы [ 3 ]

9 голосов
/ 17 июля 2011
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

Используйте регистр в соответствии с тем, что не означает никакая информация: пусто или пусто.

8 голосов
/ 17 июля 2011
$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';
}
0 голосов
/ 17 июля 2011

Я думаю, что это было бы лучше решить в php, где вы создаете функцию, которая определяет имена столбцов и присваивает вес каждому, а затем вычисляет% завершения на основе данных, полученных из БД, почему имя может рассчитывать для20%, а возраст может рассчитывать на 5% и т. Д., А столбцы и определения веса могут даже храниться извне, например, в XML-файле, чтобы кто-то другой мог играть с процентами и не нуждаться в программисте для настройки требований

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...