Sc0undRel
@Sc0undRel

Как выбрать записи в MySQL?

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

Как правильно составить запрос, который подсчитает общее количество новостей, которые имеются в категории 2 ?
  • Вопрос задан
  • 461 просмотр
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 3
Antiless
@Antiless
Думается мне, у вас неверно спроектирована БД, а точнее не соответствует 1й НФ.
Я советую, например, завести еще одну таблицу, для хранения связи между категориями и статьями
Ответ написан
Сделайте одну таблицу категории.
таблица category
id | name

Сделайте одну таблицу новостей.
таблица news
id | name

Сделайте связующую таблицу.
таблица catenews
idcategory | idnews


предположим в таблице category есть id 3 - name "Категория 1"
запрос SELECT count(*) FROM catenews WHERE catenews.idcategory = 3
Ответ написан
@mletov
Если перепроектировать базу нельзя (пример для категории с ид 3)

SELECT COUNT(id) AS cnt 
FROM table
WHERE CONCAT(',', categories, ',') LIKE '%,3,%'


А вообще солидарен с комментарием про 1НФ
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы