SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 12.05.2024 08:49:09

rbwest
Участник
Зарегистрирован: 30.10.2011
Сообщений: 21

Одним запросом из одной таблицы и данные, и количество

Добрый день! Возможно это неправильно, но я пытаюсь одним запросом получить и данные из таблицы, и кол-во строк соответствующих определенному условию
У меня получился следующий код, который получает то что нужно, но данные дублируются
Структура такая:
таблица со статьями блога articles_blog в которой есть поле cat_id

title                   category_title          cat_id
Статья первая    Первая категория     1
Статья вторая    Вторая категория     2
Статья третья    Вторая категория     2

Результат нужен такой

Первая категория - 1
Вторая категория  - 2

То есть, получить кол-во постов соответствующей категории

Код, который у меня  получился (там еще есть проверка на категории, получать которые не нужно)


$query  = "SELECT ab.id, ab.publish, ab.cat_id, ab.category_title, ab.category_alias, COUNT(ac.cat_id) as post_count  
                       FROM articles_blog ab
                       LEFT OUTER JOIN articles_blog ac ON ac.cat_id=ab.cat_id
                       WHERE ab.publish=1 AND  ab.cat_id != 3
                       GROUP BY ab.id LIMIT 5"
;
 


Получаю такой результат

Первая категория - 1
Вторая категория  - 2
Вторая категория  - 2

если добавить третью статью во 2-ю категорию, соответственно будет

Первая категория - 1
Вторая категория  - 3
Вторая категория  - 3
Вторая категория  - 3

Буду очень благодарен за любую помощь!

Отредактированно rbwest (12.05.2024 08:50:57)

Неактивен

 

#2 12.05.2024 10:23:18

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5833

Re: Одним запросом из одной таблицы и данные, и количество

У вас группировка по id, а не категории. И совсем не ясно зачем там JOIN.

SELECT cat_id, COUNT(*) as post_count  
FROM articles_blog
WHERE publish=1 AND  cat_id != 3
GROUP BY cat_id LIMIT 5";


Посмотрите ещё эту статью https://sqlinfo.ru/articles/info/18.html

Неактивен

 

#3 12.05.2024 11:34:06

rbwest
Участник
Зарегистрирован: 30.10.2011
Сообщений: 21

Re: Одним запросом из одной таблицы и данные, и количество

vasya, спасибо! Но не совсем то, мне надо еще и данные другие получить, а не только кол-во.
То есть, если добавить в селект title то дает ошибку


SELECT cat_id, title, COUNT(*) as post_count
FROM articles_blog
WHERE publish=1 AND  cat_id != 3
GROUP BY cat_id LIMIT 5"


Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1055

Неактивен

 

#4 12.05.2024 13:17:19

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5833

Re: Одним запросом из одной таблицы и данные, и количество

Так ссылка на статью не просто так указана. Там как раз объясняется почему возникает эта ошибка и как её избежать.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson