2014-11-22 106 views
1
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); 

能否請你改變這個查詢,以便它在返回表中的所有記錄,同時使用WHERE子句,這樣如果需要的話我可以搜索特定的記錄。目前,它不返回任何東西:MySQL查詢用SUM和WHERE不起作用

select *, sum(price+shipping+paypalfee+storefee) as totalcost 
    from tblsales 
    group by orderno 
    where " . $where . " 
    order by $sort $order 
    limit $offset,$rows 
+2

我改變WHERE到HAVING和它的作品...哇 – 2014-11-22 13:31:03

+1

小心!你在濫用MySQL的GROUP BY擴展。結果集中唯一具有可預測值的列是'orderno'和總和。其餘的值是不可預測的。讀這個。 http://dev.mysql.com/doc/refman/5.6/en/group-by-handling.html – 2014-11-22 13:52:24

+0

@BubbaYakoza。 。 。你也可以通過把'where'放在'group by'之前來解決它,它屬於它。 – 2014-11-22 13:58:08

回答

0

試試這個

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