带SUM和WHERE的Mysql查询不起作用
请更改此查询,以便在使用WHERE子句时返回表中的所有记录,以便我可以在需要时搜索特定记录。目前它没有返回任何内容:带SUM和WHERE的Mysql查询不起作用,mysql,sql,Mysql,Sql,请更改此查询,以便在使用WHERE子句时返回表中的所有记录,以便我可以在需要时搜索特定记录。目前它没有返回任何内容: include 'conn.php'; $page = isset($_POST['page']) ? intval($_POST['page']) : 1; $rows = isset($_POST['rows']) ? intval($_POST['rows']) : 10; $sort = isset($_POST['sort']) ? strval($_POST['so
include 'conn.php';
$page = isset($_POST['page']) ? intval($_POST['page']) : 1;
$rows = isset($_POST['rows']) ? intval($_POST['rows']) : 10;
$sort = isset($_POST['sort']) ? strval($_POST['sort']) : 'saleid';
$order = isset($_POST['order']) ? strval($_POST['order']) : 'desc';
$orderno = isset($_POST['orderno']) ? mysql_real_escape_string($_POST['orderno']) : '';
$offset = ($page-1)*$rows;
$result = array();
$where = "orderno like '$orderno%'";
$rs = mysql_query("select count(*) from tblsales where " . $where);
$row = mysql_fetch_row($rs);
$result["total"] = $row[0];
$rs = mysql_query("select *, sum(price+shipping+paypalfee+storefee) as totalcost from tblsales group by orderno where " . $where . " order by $sort $order limit $offset,$rows");
$items = array();
while($row = mysql_fetch_object($rs)){
array_push($items, $row);
}
$result["rows"] = $items;
echo json_encode($result);
试试这个
select *, sum(price+shipping+paypalfee+storefee) as totalcost
from tblsales
group by orderno
where " . $where . "
order by $sort $order
limit $offset,$rows
我改变了拥有的地方,它起作用了。。。太小心了!您正在通过扩展误用MySQL的组。结果集中唯一具有可预测值的列是
orderno
和总和。其余的价值是不可预测的。读这个@布巴亚科扎。您还可以通过将where
放在它所属的groupby
之前来修复它。@BubbaYakoza您使用的是一个早就不推荐使用的API。请参阅mysqli_u2;/PDO,最重要的是,请参阅准备好的声明@GordonLinoff我怎么能舍入总成本?
select *,sum(totalcost)
FROM (select *, price+shipping+paypalfee+storefee as totalcost from tblsales) x
group by orderno
where " . $where . "
order by $sort $order
limit $offset,$rows