我有一张看起来像这样的表:
id name qty price rev
1 book1 2 $ 10 0
2 book2 1 $ 5 0
3 book1 3 $ 15 1
4 book3 2 $ 10 0
5 book4 3 $ 15 0
6 book2 3 $ 15 1
7 book2 4 $ 20 2
,将在网络上显示的数据是
没有名称数量价格转速
1 book1 3 $ 15 1
2 book2 4 $ 20 2
3 book3 2 $ 10 0
4 book4 3 $ 15 0
这是我使用的查询
<?php
$sql = mysql_query("SELECT SUM(qty*price) FROM data_ph_user ORDER BY id");
while($res = mysql_fetch_array($sql)){
?>
<!-- display result -->
<?php
$resf1 = $res['SUM(qty*price)']; if($resf1 == 0){ echo '0'; }else{ echo $resf1; }
?>
<!-- end display -->
<?php } ?>
那么,现在如何获取数据?
我使用&#39; WHERE&#39;进行了各种查询。但是没有得到结果
答案 0 :(得分:2)
我明白你的意思..所以你只想选择每个书名最多的数量的行..对吧?
尝试以下查询
select
name, qty, price, rev
from
MyTestingTable
where
qty = (select max(qty) from MyTestingTable i where i.Name = MyTestingTable.Name)
order by MyTestingTable.name
您也可以查看给定的SQL fiddle ..它会为您提供所需的结果..
答案 1 :(得分:0)
原因是SUM
是aggregate function。这些函数通常会返回一行:在这种情况下,您将对整个表格求和,除非您按某种方式进行分组。
如果我理解你的问题,你希望列出所有元素的最高版本吗?
SELECT *, MAX(rev) FROM data_ph_user GROUP BY `name`
然后它只是typesetting it correctly的问题。