2011-03-28 43 views
0

我要选择的所有信息,在今天,像这样的变量:mySQL查询,数据作为一个PHP变量?

SELECT * FROM `table` WHERE `cat` = 'BA' and `date` LIKE '03/28%' 
SELECT * FROM `table` WHERE `cat` = 'BB' and `date` LIKE '03/28%' 
SELECT * FROM `table` WHERE `cat` = 'BC' and `date` LIKE '03/28%' 
SELECT * FROM `table` WHERE `cat` = 'BD' and `date` LIKE '03/28%' 

但是在做一个新的查询每一个,我只是想搞出:

$ba = the total number of results returned; 
$bb = the total number of results returned; 
$bc = the total number of results returned; 
$bd = the total number of results returned; 

我会如何去做这件事?

回答

0

我认为这些搜索术语的数组以及变量变量或以这种方式索引的数组将是实现这一目标的最简单方法。大大简化了添加或删除新术语。

$searches = ['ba', 'bb', 'bd'] 

foreach($search as $v) 
{ 
    $r = mysql_query("SELECT COUNT(*) FROM `table` WHERE `cat` = UCASE('$v') and `date` LIKE '03/28%'"); 
    $arr = mysql_fetch_assoc($r); 
    $$v = $r['count']; 
} 

echo $ba; //to test 

单查询

$searches = ['ba', 'bb', 'bd'] 

$sql = "SELECT "; 
foreach($search as $v) 
{ 
    $sql .= "SUM(CASE WHEN t.cat = UCASE('$v') THEN 1 ELSE 0 END) AS $v, "; 
} 
$sql .= "FROM table T WHERE t.date LIKE '03/28%'"; 
$r = mysql_query($sql); 
$arr = mysql_fetch_assoc($r); 

echo $arr['ba']; //test 
0

刚刚从

SELECT * FROM ... 

SELECT COUNT(*) FROM ... 
5

使用每个查询的开始发生变化:

SELECT SUM(CASE WHEN t.cat = 'BA' THEN 1 ELSE 0 END) AS ba, 
     SUM(CASE WHEN t.cat = 'BB' THEN 1 ELSE 0 END) AS bb, 
     SUM(CASE WHEN t.cat = 'BC' THEN 1 ELSE 0 END) AS bc, 
     SUM(CASE WHEN t.cat = 'BD' THEN 1 ELSE 0 END) AS bd 
    FROM YOUR_TABLE t 
WHERE t.date LIKE '03/28%' 
1

你可以尝试这样的事情

SELECT `cat`, COUNT(1) AS total 
FROM `table` 
WHERE `date` LIKE '03/28%' 
AND `cat` IN ('BA', 'BB', 'BC', 'BD') -- optional if these are the only `cat` values 
GROUP BY `cat` 
ORDER BY `cat` 

但是这不会为不存在的cat

返回零