2016-11-06 111 views
0

我在我的网站上的例如侧一些过滤器值的行:(?)(?)SQL查询来计算包含

过滤器设置1

  • 阿尔法
  • 奔驰
  • 罗孚(?)
  • 宝马(?)
  • 蓝旗亚(?)
  • 菲亚特(?)
  • 福特(?)

滤波器组2

  • 2座(?)
  • 3座(?)
  • 4座(?)
  • 5座(? )

现在我想的过滤器后一个数字,返回多少如果选择的是筛选结果将PUP-起来。

因此,有例如10个阿尔法和数据库中的那么后面的阿尔法会站25座赛车2“(10)”和后面的2座会站在“(25)”。但是,如果我选择了阿尔法过滤器有说“(4)”后面的2人座的过滤器,因为只有4阿尔法的也有2座跑车。

我用这个查询筛选和返回的车,但它返回一个完整的数组:

SELECT * 
FROM cars 
WHERE brand LIKE '%{$_GET[brand]}%' 
    AND seater LIKE '%{$_GET[seater]}%' 

我怎样才能改变它返回只是一个数字?

谢谢。

回答

0

如果我理解正确的话,你要填写的 “?”。这将涉及到一个单独的查询每个列表:

SELECT brand, count(*) as cnt 
FROM cars 
GROUP BY brand; 


SELECT seater, count(*) as cnt 
FROM cars 
GROUP BY seater; 

查询返回由用户选择的组合 - 每一行或计数(如果使用聚合查询)。但是,我解释了一个问题,将信息添加到列表本身。

我要指出,你可以得到计数列表中的每个值:

SELECT count(*) as cnt 
FROM cars 
WHERE brand = 'Alfa' 

不过,我劝你还是使用GROUP BY性能方面的原因 - 每个查询都有自己的开销。

0
SELECT count(A_rowname) As count FROM cars WHERE brand LIKE '%{$_GET[brand]}%' 
AND seater LIKE '%{$_GET[seater]}%' 
0

简单COUNT(),而不是*

SELECT COUNT(*) 
FROM cars 
WHERE brand LIKE '%{$_GET[brand]}%' 
AND seater LIKE '%{$_GET[seater]}%'