Отображение количества результатов из базы данных MySQL - PullRequest
2 голосов
/ 03 февраля 2010

У меня есть сайт объявлений, и он использует MySQL в качестве базы данных.

Моя цель - показать количество частных, корпоративных и общих объявлений в БД с поисковым термином, введенным в текстовом поле внутри формы!

Проблема: Есть два типа объявлений: Private и Company. Пользователь может указать, что отображать, или и то, и другое, так что three опции.

На сайте, после отображения результатов поиска, я хочу показать пользователю THREE вкладки: All ads, Private ads, Company ads.

У меня есть field в каждой записи в MySQL, которая содержит значение либо Private or Company.

Я знаю способ отображения количества частных объявлений, объявлений компании и ВСЕГО, но для этого требуется multiple queries.

Например, если пользователь ПРОВЕРЯЕТ флажок ЧАСТНЫЕ ТОЛЬКО, тогда будут искать только частные объявления, но я не буду знать, сколько объявлений компании есть, пока не сделаю новый запрос, где я также ищу объявления компании. Затем добавьте их, и у меня также будет общее количество объявлений.

Интересно, знаете ли вы какой-нибудь хороший способ избавиться от лишнего запроса?

Спасибо

Ответы [ 3 ]

3 голосов
/ 03 февраля 2010

Вы можете использовать ROLLUP :

SELECT
    IFNULL( field , 'All ads' ) AS 'Type',
    COUNT( * )
FROM
    `table`
GROUP BY
    field
WITH ROLLUP

Таким образом, с четырьмя компаниями и одним частным объявлением вы увидите:

Type       COUNT( * )
Company    4
Private    1
All ads    5
2 голосов
/ 03 февраля 2010
SELECT field , COUNT( id ) 
FROM db
GROUP BY field;
0 голосов
/ 03 февраля 2010

Запросите все данные сразу и передайте их PHP.После того, как вы установили его в PHP, создайте три отдельных цикла. Например:

foreach($data AS $row)
{
    if($row['type'] == 'company')
    {
        // LOOP THROUGH COMPANY DATA
    }
}

foreach($data AS $row)
{
    if($row['type'] == 'private')
    {
        // LOOP THROUGH PRIVATE DATA
    }
}

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

Если вам нужны только подсчеты, используйте предложение GROUP BY при выборе подсчетов.

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