Вы не сказали нам, какие поля из базы данных будут возвращены вашим запросом. Также похоже, что вы фильтруете (предложение WHERE) по ключевому столбцу, который должен возвращать только одну запись. Поэтому вы можете вычеркнуть все, что у вас есть, и положить только:
$greatest_record = 34;
Запрос вообще не нужен!
Немного больше информации о том, что вы делаете и какие поля вы ожидаете:
$query = "SELECT id, rate FROM rates";
$result = mysql_query($query);
$myarray = array();
$greatest_number = 0;
while ($row = mysql_fetch_array($result)) {
myarray[] = $row; // Append the row returned into myarray
if ($row['id'] > $greatest_number) $greatest_number= $row['id'];
}
// Print out all the id's and rates
foreach ($myarray as $row_num => $row) {
print "Row: $row_num - ID: {$row['id']}, Rate: {$row['rate']} <br>";
}
print "Highest ID: $greatest_number";
Обратите внимание, что мы сохранили наибольшее число в каждой строке, возвращаемой из базы данных, поэтому нам не пришлось снова циклически проходить через $ myarray. Незначительная оптимизация, которая может быть огромной оптимизацией, если у вас десятки тысяч строк и более.
Это решение основано на том, что вам необходимо использовать поля ID и RATE из базы данных позже, но вы хотите знать, какой сейчас самый большой идентификатор. Любой, не стесняйтесь редактировать мой ответ, если вы думаете, что есть лучший способ получить наибольший_номер из $ myarray после его генерации.
Обновление:
Тогда вам понадобится несколько запросов для выполнения вашей задачи.
Первый даст вам среднюю ставку за книгу:
SELECT
book_id,
avg(rate) as average_rate
FROM Rates
GROUP BY book_id
Второй даст вам максимальный средний показатель:
SELECT
max(averages.average_rate),
averages.book_id
FROM (
SELECT
book_id,
avg(rate) as average_rate
FROM Rates
GROUP BY book_id
)
as averages
WHERE averages.average_rate = max(averages.average_rate)
Это даст вам список книг для данного автора:
SELECT book_id
FROM Books
WHERE writer_id = $some_id
Не пытайтесь делать все в одном запросе. Смешивание всех этих требований в одном запросе не будет работать так, как вы хотите, если только вы не возражаете против множества очень близких повторяющихся строк.
Я надеюсь, что вы можете использовать это обновление, чтобы ответить на ваш вопрос. Эти SQL-запросы дадут вам необходимую информацию, но вам все равно придется строить свои структуры данных в PHP, если вам нужно как-то использовать эти данные. Я уверен, что вы можете понять, как это сделать.