как считать значения из таблицы и возвращать true, только если значение найдено 5 раз с использованием php mysql - PullRequest
0 голосов
/ 27 июня 2018

Я создаю пользовательскую систему, используя PHP и MySQL.

ЭТО МОЙ СТОЛ

-------------- 
ID    value      
--------------- 
1       1           
2       0           
3       1
4       1
5       1
6       0   

Я пытаюсь написать запрос mysql в php, который отображает только общее количество значений, если общее количество значений больше 5. То есть возвращает запрос как истинный, только если в таблице найдено более 5 записей. .

Может кто-нибудь помочь мне? Я перепробовал много вещей.

Это мой код, который я пробовал до сих пор

 $query = "  SELECT COUNT(value) AS value,
                    CASE
                    WHEN value > 0 THEN value ELSE 0 END
                    FROM users
            ";

 $query = $this->db->query($query);

 $query->result_array();

 if ($query->num_rows() > 0){

     echo "more than 5 records are found";

 } 

СПАСИБО

(РЕДАКТИРОВАТЬ - Чтобы прояснить вопрос)

Так что, если мы посмотрим на таблицу ниже (ТАБЛИЦА 1), значение = 1 найдено 6 раз в таблице. Таким образом, запрос должен вернуть true. Это потому, что я пытаюсь сосчитать все значения, где значение = 1, а не значение = 0. И я хочу вернуть запрос, только если значение = 1 найдено 5 или более раз.

TABLE 1 
-------------- 
ID    value      
-------------- 
1       1           
2       0           
3       1
4       1
5       1
6       0  
7       1
8       1

Если мы посмотрим на ТАБЛИЦУ 2 ниже, значение = 1 встречается только 2 раза в этой таблице. Таким образом, мы возвращаем запрос как false, потому что нам нужно, чтобы значение = 1 было найдено в таблице более 5 раз, чтобы вернуть true.

TABLE 2 
-------------- 
ID    value      
-------------- 
1       1           
2       0           
3       1
4       0
5       0
6       0  
7       0
8       0

Я бы хотел, чтобы это происходило в запросе, а не с использованием операторов if вне запроса с использованием php. ie, if($results > 5) { return true}

СПАСИБО

Ответы [ 3 ]

0 голосов
/ 27 июня 2018

Вы можете использовать следующий запрос для получения данных, если существует 5 или более 5 записей

select *
from users u
where (
  select count(*)
  from users
) >= 5

Демо

Вот еще одна демоверсия , если в таблице менее 5 строк

0 голосов
/ 27 июня 2018

, если вы хотите получить сумму значений в значении столбца, вы можете использовать это.

    $data = $this->db->get('users')->result_array();

    foreach ($data as $row) {
        $num_value[] = $row['value'];
    }
    $num_value = array_sum($num_value);
    if($num_value > 5){
        echo 'value is more than 5';
    }
    else{
        echo 'value is equal or less than 5';
    }
0 голосов
/ 27 июня 2018

Надеюсь, это поможет вам:

Вы можете использовать count_all, чтобы получить счетчик, а затем получить пользовательские записи

$count = $this->db->count_all('users');

if ($count > 5)
{
  $query = $this->db->get('users');
  $records = $query->result_array();
  print_r($records);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...