2011-10-24 63 views
-2

我正在开发一个交易网站。用户将发布某些产品的价格,100美元,120美元。我想显示该产品的最高价格,这意味着当前最高价格将取代以前的最高价格。的MySQL表为:选择mysql中的最大数字

user_email //The user who gives price for the product 
product//The product name 
price//The prices that users posted 
chosen//it will be 1 if it is highest otherwise 0 

我想要做的是,如果用户发布的,100 $例如,一本书,它是目前价格最高的(选择是一个该用户)和网站显示。另一位用户发布该书的价格为120美元,现在是最高价格(选择为1),而前一位用户的选择为0.我无法弄清楚如何比较某些产品的价格,并更改所选的较低价格0产品。我怎样才能做到这一点?对不起,我是新:(

+1

到目前为止你有什么? –

+0

我有一个以上的选择1,因为我不能选择最高的价格:( – user893970

+0

请发布您的代码 –

回答

3

您可以使用MAX函数从MySQL获得一个colomn的最高数量。例如:

SELECT MAX(field) FROM `table_name` 

您只需要添加WHERE,它将限制搜索字段。

后,更新一切像这样的东西

UPDATE `table_name` SET `field` = 0 WHERE `product` = "X" AND `id` != Y 

X将产品ID和Y将是第一个查询的ID。

1

像这样的事情会做你,

$q = $dbc -> prepare("SELECT price FROM table_name ORDER BY price DESC LIMIT 1"); 

by子句使用顺序将让你的最高价格,现在它存储在像这样的变量,

$q -> execute(); 
$highest = $q -> fetch(PDO::FETCH_ASSOC); 

现在改变所有其他用户的价格为零,

$q = $dbc -> prepare("UPDATE table_name SET price = 0 WHERE price != ?"); 
$q -> execute(array($highest)); 

现在,这将消除对需要因为您只需要出价的最高价格,使用与上述查询相反的另一参数可以很容易找到出价的最高价格。

这个例子是使用PDO,我强烈建议,如果你是一个交易网站,我希望这是你想达到什么,

快乐编码,

+0

我认为你需要在选择查询的末尾添加'DESC',并且在此之后可能很好地添加'LIMIT 1'。 – ghbarratt

+0

完成,忘记了关于LIMIT 1谢谢 – cgweb87