我正在构建一个博客档案导航菜单。目前,我运行一个查询来获取所有的年份和月份。然后循环遍历并运行以下查询,以获取该年/月博客文章的所有id和标题:
SELECT `id`, `title`
FROM `news`
WHERE YEAR(`date`) = "2010" AND MONTH(`date`) = "03"
ORDER BY `date` DESC在此之后,为了计算那个月的帖子数量,我运行了一个非常类似的查询:
SELECT COUNT(*) as `count`
FROM `news`
WHERE YEAR(`date`) = "2010" AND MONTH(`date`) = "03"当然,年份和月份是动态的。
有办法避免运行两个不同的查询吗?
提前谢谢!
发布于 2010-01-13 21:59:24
发送第一个查询(http://php.net/manual/en/function.mysql-num-rows.php)后,可以通过php对行进行计数。
发布于 2010-01-13 22:06:31
怎么回事:
SELECT `id`, `title`, count(*) AS `count`
FROM `news`
WHERE YEAR(`date`) = "2010" AND MONTH(`date`) = "03"
GROUP BY ( `id` ) #assuming id is unique
ORDER BY `date` DESC编辑:忘记添加GROUP BY子句
编辑2:忘记了上面的内容。这显然是不对的。这将发挥作用,尽管它可能不是很优雅:
SELECT
`id`,
`title`,
( SELECT
count(*)
FROM
`news`
WHERE
YEAR(`date`) = "2010" AND
MONTH(`date`) = "01" ) as `count`
FROM
`news`
WHERE
YEAR(`date`) = "2010" AND
MONTH(`date`) = "01"
ORDER BY
`date` DESC因此,建议的mysql_num_rows()毕竟不是那么糟糕。:)
发布于 2010-01-13 22:01:34
您可以使用php count()来完成它;如果您的db实现了这个方法:
echo count($this->db->fetch_array($q));很容易知道有多少物品
https://stackoverflow.com/questions/2060569
复制相似问题