Mysql запрос, получение средних результатов - PullRequest
0 голосов
/ 22 июня 2011

Итак, я получил этот запрос, возможно ли получить результаты MySQL из avgscore?

SELECT * FROM dog_clinic
LEFT JOIN (SELECT AVG(score) AS avgscore, input_id
FROM dog_clinic_score GROUP BY input_id) s ON s.input_id = dog_clinic.id
ORDER BY avgscore DESC, visited DESC LIMIT 0,10

Заранее спасибо

Целое утверждение:

if ($stmt_dog_clinic = $mysqli->prepare("SELECT dog_clinic.id, dog_clinic.name, dog_clinic.content, dog_clinic.city, dog_clinic.street, dog_clinic.picture, dog_clinic.visited, s.avgscore FROM dog_clinic LEFT JOIN (SELECT AVG(score) AS avgscore, input_id FROM dog_clinic_score GROUP BY input_id) s ON s.input_id = dog_clinic.id ORDER BY s.avgscore DESC, dog_clinic.visited DESC LIMIT 0,10"))
 {
  $stmt_dog_clinic->bind_result($id, $name, $content, $city, $street, $picture, $visited, $avgscore);
  $stmt_dog_clinic->execute();
while ($stmt_dog_clinic->fetch())
{ echo $avgscore; }

$ avgscore не производит никаких данных.

Ответы [ 2 ]

0 голосов
/ 22 июня 2011

Хорошо, давайте сделаем еще один шаг ... Выполняя левое соединение, это означает, что не все клиники для собак имеют какой-либо "оцененный" рейтинг ... если это так, это значение будет равно NULL и может привести к задыхаться.

SELECT
      dc.*, 
      COALESCE( s.avgscore, 0 ) FinalAvg
   FROM 
      dog_clinic dc
         LEFT JOIN ( SELECT dcs.input_id,
                            AVG(dcs.score) AS avgscore
                        FROM 
                           dog_clinic_score dcs
                        GROUP BY 
                           dcs.input_id) s 
            ON dc.id = s.input_id
   ORDER BY 
      COALESCE( s.avgscore, 0 ) DESC,
      dc.visited DESC 
   LIMIT 
      0,10;
0 голосов
/ 22 июня 2011

Вы имеете в виду это:

SELECT dog_clinic.*, s.avgscore FROM dog_clinic
LEFT JOIN (SELECT AVG(score) AS avgscore, input_id
FROM dog_clinic_score GROUP BY input_id) s ON s.input_id = dog_clinic.id
ORDER BY s.avgscore DESC, dog_clinic.visited DESC LIMIT 0,10;

Я думаю, что Рахул прав, это неявно s.avgscore DESC, dog_clinic.visited DESC, я также интегрировал это в запрос.

...