0

次の関係で接続された 3 つのテーブルがあります。

"agency" 1-n "agent" 1-n "ad" 
(agency has many agents and each agent has many ads)

次のように、代理店ごとの広告数のリストを取得したいと考えています。

agency_name   |   ad_count
---------------------------
agency 1      |     15
agency 2      |     25
agency 3      |     0

広告がゼロの代理店でさえ表示される場所。これは可能ですか?どうもありがとう!

4

3 に答える 3

1

あなたは正確なテーブル構造を提供していないので、少し推測する必要があります

select agency.agency_name, 
       count(ad.id) as ad_count
from agency 
left outer join agent on agency.id = agent.agency_id
left outer join ad on ad.id = agent.ad_id
group by agency.agency_name
于 2013-01-06T13:40:10.833 に答える
1

SQL フィドル

select agency.agency_name, count(ad.id)
from agency
left join agent on agent.agency_id = agency.id
left join ad on ad.agent_id = agent.id
group by agency.agency_name
于 2013-01-06T13:46:04.567 に答える
0

これを試して:

SELECT a.agencyname, IFNULL(b.adcnt, 0) adcount  
FROM agency 
LEFT JOIN (SELECT a.agencyid, SUM(adcnt) adcnt 
           FROM agent a 
           INNER JOIN (SELECT agentid, COUNT(agentid) adcnt 
                       FROM ad 
                       GROUP BY agentid
                      ) b ON a.agentid = b.agentid 
           GROUP BY agencyid) b ON a.agencyid = b.agencyid
于 2013-01-06T13:43:19.337 に答える