Вывод в цикле суммы строчек с одинаковым идентификатором.

Тема в разделе "PHP", создана пользователем Bobrov, 24 мар 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Bobrov

    Bobrov Постоялец

    Регистр.:
    7 авг 2008
    Сообщения:
    145
    Симпатии:
    13
    Подскажите пожалуйста, с помощью какой команды на различных сайтах выводиться количество элементов внутри категории

    Пример:
    Автомобили (20)
    Катера (6)
    Велосипеды (13)

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

    Категории выводятся в цикле, далее хочу чтоб считалось скока в таблице объектов с id равным id категории и писалось в скобочках.
     
  2. black.cat

    black.cat

    Регистр.:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    32
    select count(*) from название_таблицы_с_объектами where id=айди_категории;
     
  3. Bobrov

    Bobrov Постоялец

    Регистр.:
    7 авг 2008
    Сообщения:
    145
    Симпатии:
    13
    Пробовал, но на сколько я знаю это создает нагрузку и подобные запросы вставлять в цикл не рекомендуется?
     
  4. t0os

    t0os

    Регистр.:
    21 окт 2007
    Сообщения:
    284
    Симпатии:
    36
    Сделайте запрос до цикла. В цикле делать какие-либо запросы вообще не рекомендуется.

    Попробуйте такой запрос:
     
  5. jID

    jID Постоялец

    Регистр.:
    12 фев 2008
    Сообщения:
    106
    Симпатии:
    31
    Заведи табличку, соторая будет только эти значения содержать, а потом JOIN-ом соединяй в запросе.
    Плюс в том, что COUNT() не нужно использовать, что даёт выгоду при больших базах.
    Минус, в том, что при любом изменении сиоержимого рубрик нужно делать два запроса в (обе таблицы).
     
  6. Maxsystems

    Maxsystems Создатель

    Регистр.:
    18 мар 2009
    Сообщения:
    22
    Симпатии:
    2
    А я делаю в таблице категориях дополнтельное поле в котором считается кол-во объектов.
    При добавление или удаление соотвественно обнавляется данные в таблице +1 или -1 , и не нужно делать не какую третью таблицу.
     
  7. Bobrov

    Bobrov Постоялец

    Регистр.:
    7 авг 2008
    Сообщения:
    145
    Симпатии:
    13
    Напиши пожалуйста структуру.
     
  8. agent_smit

    agent_smit Постоялец

    Регистр.:
    12 дек 2008
    Сообщения:
    60
    Симпатии:
    11
    Можно попробовать создать view (id, count).

    Но про count(*) читал, что он создает нагрузку когда таблицы типа InnoDB, а если MyISAM, то он работает очень шустро с большим количеством записей.
     
  9. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
    Какая структура там? =)
    Создаешь дополнительное поле в таблице категорий. Допустим count_product
    При добавлении нового объекта после INSERT в таблицу объектов делаешь UPDATE 'таблица категорий' SET count_product+1 WHERE id='категория которую указали при добавлении'
     
  10. NoN

    NoN Постоялец

    Регистр.:
    25 ноя 2008
    Сообщения:
    79
    Симпатии:
    33
    Лучше делать не + - при удалении и добавлении, а каждый раз после этих действий подсчитывать кол-во статей в каталге и записывать их в яйчейку. Так как если статья не удалится или не доабвтся ошибочно, то счетчик навсегда собьется.
     
    Bobrov нравится это.
Статус темы:
Закрыта.