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

Тема в разделе "PHP", создана пользователем trooll, 7 янв 2012.

Модераторы: latteo
  1. trooll

    trooll PHP кодер

    Регистр.:
    22 дек 2008
    Сообщения:
    503
    Симпатии:
    116
    Есть простой одномерный массив с хешами 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
     
            )

    Либо может есть какое то решение которое менее затратное по времени чем обработка в цикле
     
  2. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
    PHP:
     
    $sql 
    '
     SELECT id , count(hesh) AS "count"  
    FROM table
        WHERE hesh IN ("' 
    implode('","'$heshArray). '")
     GROUP BY hesh'
    ;