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

Моя база данных - 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.