显示MySQL数据库的结果数量

时间:2010-02-02 21:25:53

标签: php sql mysql database search

我有一个分类广告网站,它使用MySQL作为数据库。

我的目标是显示数据库中的私有广告,公司广告和总广告的数量,并在表单内的文本输入中输入搜索字词!

问题: 广告有两种类型:PrivateCompany。 用户可以指定要显示的内容或两者,以便three选项。

在网站上,在显示搜索结果后,我想向用户显示THREE个标签:All adsPrivate adsCompany ads

我在MySQL的每条记录中都有一个field,其中包含Private or Company的值。

我知道如何显示私有广告,公司广告和道达广告的数量,但需要multiple queries

例如,如果用户选中“仅私人”复选框,则仅搜索私有广告,但在我进行新查询之前,我不知道有多少公司广告,我也搜索公司广告。然后添加它们,我还有nr个广告。

只是想知道你是否知道一个好的方法,也许可以摆脱额外的查询?

由于

3 个答案:

答案 0 :(得分:3)

您可以使用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

答案 1 :(得分:2)

SELECT field , COUNT( id ) 
FROM db
GROUP BY field;

答案 2 :(得分:0)

立即查询所有数据并将其传递给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子句。