Привожу таблицу с тестовыми данными:
если у контакта три категории с total_points 2, 0 и 8 соответственно, то категория этого контакта - 3 (с total_points 8).
в данном запросе должно было вернуться не Шерсть, а 100% полиэстер
SELECT IF( !('100% полиэстер'), '100% полиэстер', 'NULL' )
SELECT IF( ! 100, '100% полиэстер', 'NULL' )
SELECT IF( FALSE, '100% полиэстер', 'NULL' )
Null не может никак интерпретироваться.
а теперь давайте усложним, представим что вложенный запрос возвращает шерсть.
select if('шерсть', 1, 2);
сразу лишаются смысла ибо при отсутствии записи будут давать один и тот же вариант.
ибо кастинг null к boolean работать не будет
Структура таблицы oc_product_attribute
Предположу что стоит это понимать как то что NULL это специфическое значение, и для SQL и попытка привести к булеан через !(NULL) не работает;
$create_table = mysqli_query($connect, "INSERT INTO `users`(`id`, `username`, `email`, `password`, `plan`, `banned`, `avatar`, `subscribers`, `status`, `used_plan`) VALUES (NULL, '$username', '$email', '$password', 3, 'no', '$rand1', 0, 'surfer', 3)");
даже ошибку при выполнении не выводит!
error.log пустой
Так тут ещё и параметр затесался? тогда вообще каша и никакой ясности...
В общем, глянь для затравочки: https://dbfiddle.uk/?rdbms=mariadb_10.4&fiddle=77a...
Для каждого юзера получена "максимальная" категория, и помечено, совпадает она с запрошенной или нет.