解决计数查询问题

时间:2015-07-22 16:26:34

标签: php sql

我有以下代码,我需要从personabisna表中选择所有项目,并从另一个表中使用相同的personalbisnaId计算项目,其中两个表共享personalbisnaid

 $query="select c.BusinessLogo,
                    c.PersonalBisnaId, 
                    c.account_id,
                      AS Ads from personalbisna As c INNER JOIN myads AS b on b.PersonalBisnaId=c.PersonalBisnaId GROUP BY c.PersonalBisnaId LIMIT $itemfrom,$dataperpage";

这些是表格

Personalbisna表

| PersonalBisnaId| account_id| BusinessLogo
---------------------------------------------
|       1         |   23     |  qwertyu.jpg
|       2         |    4     |  asdfghjk.jpg
|       3         |   12     |  34567gfd.jpg
|       4         |   34     |   drtyujhv.jpg

myads表

|   MyAdsId       | PersonalBisnaId| AdType
---------------------------------------------
|       1         |     2           |  logo
|       2         |     2           |  business card
|       3         |     3           |  logo
|       4         |     2           |   caricalture

我已经使用了一些已经回答的问题来解决我的问题,而且我真的很难解决我的问题

以上查询应输出以下内容

| PersonalBisnaId| account_id| BusinessLogo      | AdsCount
-------------------------------------------------------
|       1         |   23     |  qwertyu.jpg      |  0
|       2         |    4     |  asdfghjk.jpg     |  3
|       3         |   12     |  34567gfd.jpg     |  1  
|       4         |   34     |   drtyujhv.jpg    |  0

这就是我所拥有的

$query="SELECT  
                c.BusinessLogo,
                c.PersonalBisnaId, 
                c.account_id,
                c.BusinessName,
                c.BusinessCategory,
                c.BusinessSubCategory,
                c.town,
                c.estate,
                c.street,
                c.road,
                c.building,
                c.Address,
                c.city,
                c.PhoneNumber,
                c.AltPhoneNumber,
                c.website,
                c.Email,
                c.BusinessType              
                COUNT(MyAdsId)  AS AdsCount
                FROM   personalbisna AS c 
                LEFT OUTER JOIN myads AS b 
                ON  b.PersonalBisnaId= c.PersonalBisnaId 
                GROUP BY  c.PersonalBisnaId LIMIT $itemfrom,$dataperpage";

1 个答案:

答案 0 :(得分:0)

您的查询中缺少

Count聚合。

此外,如果您想要选择Personabisna表中的所有项目,而不是INNER JOIN,则需要Left/Right Outer Join

SELECT          c.personalbisnaid, 
                c.account_id,
                c.BusinessLogo,
                Count(AdType)      AS AdsCount 
FROM            personalbisna AS c 
LEFT OUTER JOIN myads         AS b 
ON              b.personalbisnaid=c.personalbisnaid 
GROUP BY        c.personalbisnaid, 
                c.account_id,
                c.BusinessLogo