繁体   English   中英

使用PHP帮助MYSQL查询以构建博客存档导航菜单

[英]Help with MYSQL query using PHP to build a blog archive navigation menu

我正在构建博客存档导航菜单。 目前,我运行查询以获取所有年份和月份。 然后循环浏览并运行以下查询,以获取该年/月博客文章的所有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"

年份和月份当然是动态的。

有什么方法可以避免必须运行两个单独的查询?

提前谢谢!

有什么问题:

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()毕竟还算不错。 :)

发送第一个查询( http://php.net/manual/en/function.mysql-num-rows.php )后,您可以通过php计算行数

您可以使用php count(); 如果您的数据库实现此方法:

echo count($this->db->fetch_array($q));

容易知道有多少个项目

您不能一口气做完所有这些吗?

SELECT COUNT(id) as count, MONTH(date) as month, YEAR(date) as year 
FROM news 
GROUP BY MONTH(date), YEAR(date)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM