У меня есть одна таблица с event_id и image_id. Я хочу найти в этой таблице количество строк с одинаковым значением -> max.

Означает, что в этой таблице вывод должен выглядеть так: 1508706279 -> image_id 4 -> no of rows

Вот моя таблица.

enter image description here

Ниже приведен код, который я пробовал.

$sql2 = "select image_id, COUNT(*) as count from user_likes where event_id  = '$id' GROUP BY image_id";

                    if($result2 = mysqli_query($conn, $sql2)) {

                        $result1 = mysqli_fetch_array($result2);

                        $win = $result1['image_id'];
                        $count = $result1['count'];

                    } 

Теперь я не могу понять, в чем проблема, но этот код отлично работает, когда есть строки между идентификаторами 52 и 60, он показывает вывод:

1508706279 -> image_id 4 -> количество строк

Но когда я добавляю еще две строки с идентификаторами 64 и 65, он показывает вывод:

818525590 -> image_id 1 -> количество строк

Помогите мне в этой ошибке, которую я здесь делаю. !!

0
chirag patel 8 Июл 2017 в 08:50
Это потому, что 65 имеет другое имя image_id, и вы группируете с image_id
 – 
urfusion
8 Июл 2017 в 08:57
Итак, что я могу сделать здесь, чтобы получить правильный результат?
 – 
chirag patel
8 Июл 2017 в 08:58
Если вы хотите получить количество строк с одинаковыми значениями на основе event_id, удалите GROUP BY image_id
 – 
urfusion
8 Июл 2017 в 09:00
Спасибо. проверим это в моем коде.
 – 
chirag patel
8 Июл 2017 в 09:02

1 ответ

Лучший ответ

Ваш запрос возвращает коллекцию image_id и count. Коллекция не упорядочена, поэтому у вас есть первая из выбранных, если вам нужно упорядочить максимальное количество попыток по count (*) desc

  $sql2 = "select image_id, COUNT(*) as count 
            from user_likes 
            where event_id  = '$id' 
            GROUP BY image_id
            ORDER BY count(*) DESC";

И вы можете ограничить до 1, если вам нужна только одна строка

  $sql2 = "select image_id, COUNT(*) as count 
            from user_likes 
            where event_id  = '$id' 
            GROUP BY image_id
            ORDER BY count(*) DESC LIMIT 1";
0
ScaisEdge 8 Июл 2017 в 08:57
Упс. !! Глупая ошибка. Прекрасно работает. большое спасибо :) приму ваш ответ.
 – 
chirag patel
8 Июл 2017 в 09:00