mysql — подсчет не нулевых столбцов с использованием переполнения стека

у меня есть таблица «tbl_userpersonal»,

я хочу проверить, какие столбцы заполнены, а какие нет, поэтому я могу рассчитать или отобразить процент завершения профиля.
\

До сих пор я пробовал много разных методов и кодов, и мой код считает все столбцы, но я хочу, чтобы он считал пустые столбцы значений как 0.
пожалуйста, помогите мне с решениями.

Пока, если в каком-либо столбце есть хотя бы одна запись для пользователя, это дает мне 100%, в противном случае 0% нет промежуточных

В настоящее время, если есть значение внутри «Father_name» & «Имя матери» & Столбец «DOB» для пользователя с user_authtoken = «app_7837hfjd57hdj» ожидаемый результат должен быть
3
50% т.е. (3/6) * 100

что происходит сейчас

если в любом из этих столбцов есть значение для пользователя с user_authtoken = «app_7837hfjd57hdj», вывод будет отображаться как

6
100% т.е. (6/6) * 100

или если для пользователя нет записи с user_authtoken = «app_7837hfjd57hdj», вывод выдаёт
0
0%

введите описание изображения здесь

вот код php

    $personal = mysqli_query($con,"
SELECT   father_name,
mother_name,
DOB,
adhar_no,
address,
religion,
CASE WHEN father_name IS NOT NULL THEN 1 ELSE 0 END +
CASE WHEN mother_name IS NOT NULL THEN 1 ELSE 0 END +
CASE WHEN DOB IS NOT NULL THEN 1 ELSE 0 END +
CASE WHEN adhar_no IS NOT NULL THEN 1 ELSE 0 END +
CASE WHEN address IS NOT NULL THEN 1 ELSE 0 END +
CASE WHEN religion IS NOT NULL THEN 1 ELSE 0 END AS personal
FROM  user WHERE `user_authtoken` = '$user_ath'

") or die(mysqli_error($con));

$data=mysqli_fetch_assoc($personal);
$pro_count =  $data['personal'];
echo $pro_count ;
echo '<br>';
$percentage = ($pro_count /6)*100;
echo $percentage;

0

Решение

я думаю, у вас есть пустое значение в таблице, не пусто попробуйте это

это проверит как нулевое, так и пустое

$personal = mysqli_query($con,"
SELECT   father_name,
mother_name,
DOB,
adhar_no,
address,
religion,
CASE WHEN father_name IS NOT NULL AND father_name<>'' THEN 1 ELSE 0 END +
CASE WHEN mother_name IS NOT NULL AND mother_name<>'' THEN 1 ELSE 0 END +
CASE WHEN DOB IS NOT NULL AND DOB<>'' THEN 1 ELSE 0 END +
CASE WHEN adhar_no IS NOT NULL AND adhar_no<>'' THEN 1 ELSE 0 END +
CASE WHEN address IS NOT NULL AND address<>'' THEN 1 ELSE 0 END +
CASE WHEN religion IS NOT NULL AND religion<>'' THEN 1 ELSE 0 END AS personal
FROM  user WHERE `user_authtoken` = '$user_ath'

") or die(mysqli_error($con));
5

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector