2015-05-13 66 views
0

算外鍵的出現,我有3個表,內加入2個表,我使用的是MySQL在每個

橫幅(編號,類型,頁面)

點擊(ID,banner_id )

印象(ID,banner_id)

banner_id點擊的外鍵的展示表。我需要製作這樣

所需的結果表

id, type, clicks_count, impressions_count 

性能比較明智的,什麼是最好的MySQL查詢用來實現上述結果行。

回答

1

只需JOIN三個表,使用COUNT()GROUP BY

select id, type, count(c.id) clicks_count, count(i.id) as impressions_count 
from banners b 
    left join clicks c on b.id = c.banner_id 
    left join impressions i on b.id = i.banner_id 
group by id, type 

或者使用相關子查詢數:

select id, type, 
     (select count(*) from clicks c where b.id = c.banner_id) clicks_count, 
     (select count(*) from impressions i where b.id = i.banner_id) impressions_count 
from banners b 
+1

但它是如何計算點擊次數?是不是有一個計數在某個地方? – Lukesoft

+0

對不起,沒有仔細閱讀......即將編輯! – jarlh