我有一个分类广告网站,它使用MySQL作为数据库。
我的目标是显示数据库中的私有广告,公司广告和总广告的数量,并在表单内的文本输入中输入搜索字词!
问题:
广告有两种类型:Private
和Company
。
用户可以指定要显示的内容或两者,以便three
选项。
在网站上,在显示搜索结果后,我想向用户显示THREE
个标签:All ads
,Private ads
,Company ads
。
我在MySQL的每条记录中都有一个field
,其中包含Private or Company
的值。
我知道如何显示私有广告,公司广告和道达广告的数量,但需要multiple queries
。
例如,如果用户选中“仅私人”复选框,则仅搜索私有广告,但在我进行新查询之前,我不知道有多少公司广告,我也搜索公司广告。然后添加它们,我还有nr个广告。
只是想知道你是否知道一个好的方法,也许可以摆脱额外的查询?
由于
答案 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子句。