Количество повторений каждого элемента массива в базе mysql

trooll

PHP кодер
Регистрация
22 Дек 2008
Сообщения
482
Реакции
117
Есть простой одномерный массив с хешами md5() (пусть элементов будет 10:(

Код:
Array
 
        (
 
            [0] => 758146c168c485e25840b9ae99870afd
 
            [1] => e2a4b959f1b8e489ab75730222417398
 
            [2] => f5ad410595971347f97876a2807108ac
 
            [3] => d35111cf54fde22bd8cc4bc07f936618
 
            [4] => 4030306ac35253dee5f6f36123bd8905
 
            [5] => e0bc132f0fdd4b9275c868af023f6418
 
            [6] => d90b4e7b7bb31f87db6683f59ee6ea40
 
            [7] => cac086c3a375d611d6bc6932392bed3a
 
            [8] => 27399d8e1ff06ced07714662d1e92b1f
 
            [9] => b7bc06494755b509a9aa58d117e7e0b4
 
        )


Есть база MySQL с одной таблицей, в которой есть поля `id` и `hesh`.

Необходимо сделать выборку количества повторений каждого элемента массива в базе по полю `hesh`.

Это можно сделать в цикле, но такой вариант не устраивает ибо очень ресурсоемкий по времени. пример реализации запроса для обработки в цыкле:
PHP:
"SELECT COUNT(*) FROM `table` WHERE `hesh` LIKE '%ЗДЕСЬ_ХЕШ%'"

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

Но идеальный вариант на выходе получиться массив с количеством повторений в базе по каждому элементу массива, пример:

Код:
Array
 
        (
 
            [0] => 15
 
            [1] => 22
 
            [2] => 42
 
            [3] => 1
 
            [4] => 3
 
            [5] => 4
 
            [6] => 26
 
            [7] => 3
 
            [8] => 66
 
            [9] => 13
 
        )


Либо может есть какое то решение которое менее затратное по времени чем обработка в цикле
 
PHP:
$sql = '
 SELECT id , count(hesh) AS "count"  
FROM table
    WHERE hesh IN ("' . implode('","', $heshArray). '")
 GROUP BY hesh';
 
Назад
Сверху