繁体   English   中英

MySQL查询,数据作为PHP变量?

[英]mySQL query, data as a php variable?

我想选择今天所有的信息作为变量,如下所示:

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;

我将如何去做呢?

采用:

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%'

你可以尝试这样的事情

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值,这不会返回零

我认为,将这些搜索项组成的数组以及以这种方式索引的变量或数组将是完成此操作的最简单方法。 也大大简化了添加或删除新术语的过程。

$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

只需更改每个查询的开始

SELECT * FROM ...

SELECT COUNT(*) FROM ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM