php - 从一个表中选择,并在同一查询中从另一个表中计数

标签 php mysql

我对 SQL 查询有相当多的了解。

我正在尝试制作图库,我需要从包含行(id、名称、封面、照片)的表“cat_photos”中选择类别,并计算包含行(id)的表“photos”中的照片数量、拇指、照片、类别)。

这是我使用的代码:

1)选择类别

$query = mysql_query("SELECT * FROM cat_photos ORDER BY ID DESC");
               while($data = mysql_fetch_array($query)) {       
        echo "<li><a href='photos.php?cat=$data[id]'><img src='galleries/categories/$row[image]' alt='$row[name]' /></a>
              <div class='photodesc'><div class='catname'><a href='photos.php?cat=$row[id]'>$row[name]</a></div>
              <div class='catcount'>Number of photos in category</div></div></li>"; }

2) 统计类别中的照片数量

$query = mysql_query("SELECT category, COUNT(photo) FROM photos GROUP BY category") or die(mysql_error());
               while($row = mysql_fetch_array($query)){
        echo "Number of photos is ". $row['COUNT(photo)'] ." in cateogry ". $row['category'] .".";
        echo "<br />"; }

分离了所有作品,但我找不到将它们合并到一个查询中的方法。 我在 MySql 查询中用谷歌搜索了“UNION”、“JOIN”、“LEFT JOIN”选项,但我无法将这些部分组合在一起。

我想知道这在一般情况下是否可行? 该查询的顺序如何?

最佳答案

试试这个,它应该工作:

SELECT cat_photos.*, count(photos.id) as number_photos
FROM cat_photos
LEFT JOIN photos ON photos.category = cat_photos.id
GROUP BY cat_photos.id, cat_photos.name, cat_photos.image
ORDER BY cat_photos.id

可以通过 $row['number_photos'] 获取照片数量。

关于php - 从一个表中选择,并在同一查询中从另一个表中计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5223422/

相关文章:

PHP Flush/ob_flush 不工作

php - 从 Symfony 的表单中获取所有字段名称

java - PHP的MD5和Java的MD5数据不匹配

mysql - 自定义 mysql alpine 镜像未从作为卷安装的 docker-entrypoint-initdb.d 加载 init.sql

mysql - 具有多列查找的主键

php - Zend Server 分析器(Zend 调试器)

PHP 和 JavaScript Ajax : how to get URL data when our method is "GET"

java - 从 String 中删除不适合 UTF-8 编码的字符

mysql一条语句INSERT多表

mysql - 基于位掩码在mysql中查找重复记录