我对 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/