Оптимальный оператор SQL или алгоритм поиска наиболее популярных категорий элементов в базе данных - PullRequest
2 голосов
/ 19 августа 2011

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

Я хочу просмотреть все элементы в базе данных и вывести упорядоченный список наиболее часто встречающихся категорий.

РЕДАКТИРОВАТЬ: Если быть точным, есть три соответствующие таблицы базы данных.1) элемент (имя, идентификатор) 2) категория (имя, идентификатор) 3) item_category (item_id, category_id)

1) Есть ли что-нибудь более эффективное, чем это?:

Pseudocode
foreach (category)
   select all database elements which match that category
   associate category with the number of results from the select query
   return the associative array

 sort the associative array on the values of each category (key)

2) Какая функция PHP позволяет мне легко выполнять сортировку значений ассоциативного массива?Или какой SQL позволяет мне сделать это более эффективно?

1 Ответ

2 голосов
/ 19 августа 2011
SELECT COUNT(*) AS popularity
FROM categories, views
WHERE views.category_id = categories.id
GROUP BY views.category_id
ORDER BY popularity DESC

Выбирает все категории и упорядочивает их от самых популярных до наименее популярных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...