Как найти самую низкую цену участника и отобразить имя пользователя этой самой низкой уникальной заявки

Моя база данных - http://i.imgur.com/p4wUP54.jpg hey im new здесь, в php, и я не знаю, как найти самую низкую цену на аукционе продукта, и я хочу также отобразить имя пользователя это самый низкий уникальный претендент. пожалуйста, помогите мне, я попробовал, но некоторый код, который следует

$con = mysql_connect("localhost","root","");
if (!$con)
{
 die('Could not connect: ' . mysql_error());
}

mysql_select_db("gunjanbid", $con);
$sql="SELECT * from bid";
$result=mysql_query($sql); 
$username=$result['userName'];
$serial=$result['serial'];
$low_sql = "SELECT bidamount,userName, COUNT(bidamount) as bid_count 
 FROM bid 
 WHERE bidamount<'{$serial}' AND bid_count=1 AND auction='{$username}' 
 GROUP BY bidamount"; 
$low_query = mysql_query($low_sql) ; 

$low_bids = array(); 
if (mysql_num_rows($low_query) > 0) 
{ 
 $lower_bid_exist = true; 
 while ($row = mysql_fetch_assoc($low_query)) 
 { 
 $low_bids[$row['bidamount']] = $row['bid_count']; 
 } 
} else { 
 $lower_bid_exist = false; 
} 

?>
Lowest Unique Bidder :<!--?php echo $row['userName']; ?-->
2 ответа

ОК. Итак, во-первых, вам нужно подойти к этой проблеме с небольшим планом планирования.

Ваши требования: - сумма ставки должна быть уникальной - вы хотите выбрать самую низкую ставку

Существует немало способов сделать это. Я покажу вам самый простой (SQL-мудрый) способ решить вашу проблему в одном запросе (с подзапросом).

Это НЕ лучший способ - поскольку я обычно предлагаю два отдельных запроса, но это даст вам то, что вы хотите в одной строке.

http://sqlfiddle.com/#!2/2e978/10

SQL становится:

select 
 bidamount,
 username
from
 bid
where
 -- for the auction in question
 auction = '$username'
 and bidamount = (
 select
 min(lowest_bid.bidamount)
 from
 bid lowest_bid
 where
 lowest_bid.auction = '$username'
 group by
 lowest_bid.bidamount
 having
 count(distinct lowest_bid.username) = 1
 order by
 bidamount
 limit 1);


Попробуй это:

SELECT bidamount,userName, bidamount as bidamount 
 FROM bid WHERE bidamount = (SELECT MIN(bidamount) FROM bid) ORDER BY closing_date LIMIT 1

licensed under cc by-sa 3.0 with attribution.