2011-12-25 77 views
0

我在遍地搜索,但似乎无法得到正确的方式措辞我的问题得到我想要的结果(我敢肯定它是真的很容易,但我一直在拍打我的头靠在它的年龄)MySQL SELECT COUNT()然后ORDER BY date

我有以下查询:

SELECT co.title, co.content, co.id, bu.backupDate, bu.backupBy, COUNT(bu.id) AS totalBackups 
FROM content co, wol_content_backup bu 
WHERE co.car_model = '6-110' 
AND co.subcategory = 'introduction' 
ORDER BY bu.backupDate DESC 

内容有一篇文章的内容,并wol_content_backup包含了文章的备份。 bu.backupDate是一个包含备份日期的DATETIME字段。

我想要的是返回上次备份的日期(bu.backupDate)(通常有几个,因为我的大多数管理员都训练有素,在修改文章之前按下“备份”按钮!)和还有数据库备份的数量(COUNT(bu.id)AS totalBackups)

但是,我的查询当前只是返回一个结果,这是第一个备份(不是最新的)所有我想要的从具有最近对应备份日期的内容中选择行。查询工作正常,没有COUNT(bu.id),所以我猜这是问题,但不知道如何解决它...

任何帮助将非常感激!

圣诞节快乐!

编辑

感谢您的所有帮助家伙!我尝试了所有的建议(并学习了大量的新东西!)

你们都提醒我关于MAX()函数,最终导致下面的函数查询:

SELECT co.title, co.content, co.id, MAX(bu.backupDate) AS backupDate, bu.backupBy, COUNT(bu.id) AS totalBackups 
FROM content co, wol_content_backup bu 
WHERE co.car_model = '6-110' 
AND co.subcategory = 'introduction' 

哪个输出正是我想要的!

非常感谢圣诞节当天帮助编码器遇险! :)

勒布

+0

什么id字段在每个表中?是co.id = bu.id或者bu中是否有另一个id字段,表示特定备份的内容ID? – TetonSig 2011-12-25 21:53:11

+0

co.id = bu.articleID(有一个bu.id,但它只是一个索引,与co.id无关) – 2011-12-25 21:55:21

+0

coralated子查询和max应该做的伎俩。或最大的子查询(但它会更慢)[这](http://stackoverflow.com/questions/1368331/show-only-most-recent-date-from-joined-mysql-table)给你一个想法怎么样。接受的答案使用较慢的方法,有第二个例子显示相关的子查询。 – xQbert 2011-12-25 22:06:55

回答

0

我不能给你的语法把我的头型,但考虑到子查询,以获得最新的备份的日期和它添加到主查询您的WHERE子句。然后你可以放弃ORDER子句,因为你会得到一个结果(并且也会丢失COUNT)。

0

这应该给你想要的。关键是要做一个派生表,让你获得你正在处理的articleid的最新备份。然后使用外部查询的信息,让您的标题,内容和backupby日期:(穿插非代码注释)

SELECT co.title, co.content, co.id, 
bu.backupBy, 
mostrecent.MostRecentBackup, 
mostrecent.NumOfBackups 
FROM content co inner join 

这是派生表确实获得上次备份的工作,该记录包含它

(select bu.id 
     max(bu.backupdate) as MostRecentBackUP, 
     count(bu.id) as NumOfBackups 
from 
wol_content_backup bu 
Group by bu.id 
) mostrecent 

然后ID你去表内容与条款ArticleID

on co.id = mostrecent.articleid 

,并回到wol_content_backup表的backupBy字段

inner join wol_content_backup buouter on 
mostrecent.id = buouter.id 

WHERE co.car_model = '6-110' 
AND co.subcategory = 'introduction' 
ORDER BY MostRecentBackup DESC