鍍金池/ 問(wèn)答/PHP  數(shù)據(jù)庫(kù)/ mysql如何獲取對(duì)應(yīng)ID相同字段的數(shù)量?

mysql如何獲取對(duì)應(yīng)ID相同字段的數(shù)量?

商家列表名mer_content
商家上傳圖片表名mer_imgurl


商家列表名和圖片表名都有對(duì)應(yīng)的ID。

商家列表mer_content

id name
1 我是商家名稱(chēng)1
2 我是商家名稱(chēng)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

表結(jié)構(gòu)大致如上,商家列表mer_content這個(gè)表里的ID對(duì)應(yīng)商家上傳圖片表里的id,而url里的圖片就是該商家所上傳的圖片。

問(wèn)題,請(qǐng)問(wèn)我該如何獲取商家上傳圖片的數(shù)量呢?
我當(dāng)前使用

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字段查看到對(duì)應(yīng)相同ID上傳的圖片數(shù)量,但在前端列表里顯示的卻有些混亂?商家列表第一個(gè)明明有10張圖卻只循環(huán)出一個(gè)圖片,第二個(gè)兩個(gè),之后才是三個(gè),請(qǐng)問(wèn)是怎么回事呢?該如何解決呢?


具體代碼

$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]; //循環(huán)當(dāng)前商家對(duì)應(yīng)ID所上傳所有的圖片
}

非常感謝!~

回答
編輯回答
拮據(jù)
select a.name, b.total from mer_content a 
inner join
(select id, count(url) as total from mer_imgurl group by id) b
on a.id = b.id

就是把表二先按做個(gè)group,再和表一用id來(lái)join。
如果表二的id和url會(huì)有重復(fù)情況的話(huà),那么b中需要改成count(distinct url)

希望能夠幫到你。

2017年2月5日 03:14