2011-06-21 108 views
0

所以我得到了这个查询,是否有可能从avgscore中获取mysql结果?Mysql查询,获取平均结果

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 dsn't产生的任何数据。

+1

不应该是's.avgscore DESC,dog_clinic.visited DESC'吗? – Rahul

+0

声明似乎是好的,我使用mysqli类,我不知道如何绑定avgscore的结果,我需要它作为php代码的结果。 – Cameleon

+0

你得到的错误信息是什么? – stefgosselin

回答

0

好吧,让我们进一步...通过做一个左加入,这意味着并不是所有的狗诊所都有一些“得分”的评级...如果是这样,该值将为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

所以它效果很好,thx Drapp你们真棒。顺便说一句,不知道你可以缩短这样的名字,很好。 – Cameleon

+0

是啊......他们被称为“别名”的名字。派上用场,特别是如果您正在进行自我加入,或者出于任何目的多次加入同一个表格,您可以拥有像Emp1和Emp2这样的Employee表格,例如谁是他人,谁是他们的主管。 – DRapp

0

你的意思是这样的:

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,我已经集成了这个给查询为好。

+0

它仍然没有从avgscore获取数据,在上层窗口中我发布了whoole语句。 – Cameleon