商家列表名mer_content
商家上传图片表名mer_imgurl
商家列表名和图片表名都有对应的ID。
商家列表mer_content
id | name |
---|---|
1 | 我是商家名称1 |
2 | 我是商家名称2 |
商家上传图片存放表mer_imgurl
uid | id | url |
---|---|---|
1 | 1 | images/logo.gif |
2 | 1 | images/menu.gif |
3 | 1 | images/store_pic.gif |
4 | 2 | images/logo.gif |
5 | 2 | images/userupfile.jpg |
表结构大致如上,商家列表mer_content
这个表里的ID对应商家上传图片表里的id
,而url
里的图片就是该商家所上传的图片。
问题,请问我该如何获取商家上传图片的数量呢?
我当前使用
SELECT a.*,count(a.url) as num,b.* FROM mer_imgurl a LEFT JOIN mer_content b on a.id = b.id WHERE a.id='1'
的确可以在num字段查看到对应相同ID上传的图片数量,但在前端列表里显示的却有些混乱?商家列表第一个明明有10张图却只循环出一个图片,第二个两个,之后才是三个,请问是怎么回事呢?该如何解决呢?
具体代码
$merchatdb = $db->query("SELECT a.*,count(a.url) as num,b.* FROM mer_imgurl a LEFT JOIN mer_content b on a.id = b.id WHERE a.id='1'");
while($merdb = $db->fetch_array($merchatdb)){
$shopdb[]=$merdb;
}
foreach($shopdb AS $k => $v){
echo $v[url]; //循环当前商家对应ID所上传所有的图片
}
非常感谢!~
就是把表二先按做个group,再和表一用id来join。
如果表二的id和url会有重复情况的话,那么b中需要改成count(distinct url)
希望能够帮到你。