从一个表中选择,并从同一查询中的另一个表计数

Fil*_*tic 2 php mysql

我对SQL查询有很多了解.

我正在尝试制作图库,我需要从表格"cat_photos"中选择类别,其中包含行(ID,名称,封面,照片)和表格"照片"中包含行(id,thumb,照片,类别).

这是我使用的代码:

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>"; }
Run Code Online (Sandbox Code Playgroud)

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 />"; }
Run Code Online (Sandbox Code Playgroud)

分离所有作品,但我找不到将它们合并为一个查询的方法.我在MySql查询中搜索"UNION","JOIN","LEFT JOIN"选项,但我不能将这些内容组合在一起.

我想知道这一般是否可行?查询的样子怎么样?

krt*_*tek 5

试试这个,它应该工作:

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
Run Code Online (Sandbox Code Playgroud)

照片的数量可以通过$row['number_photos'].