簡體   English   中英

如何聯接兩個表並獲得以下結果?

[英]How to JOIN two tables and get the following result?

我的廣告系列表數據當前是這樣的

id    campaign_name
 1    florist
 2    dentist
 3    restaurants
 4    realestate

還有我的第二張桌子(領先)

id          campaign_id       business_id
 1               1                13456
 2               1                34563
 3               3                65987
 4               2                45654
 5               3                45632

我想按JOIN和GROUP BY列出所有廣告系列名稱,相應廣告系列的總潛在客戶。(codeigniter)

campaign_name                No. of leads
florist                            2
dentist                            1
restaurants                        2
realestate                         0

您可以使用活動記錄/查詢構建器獲取所需數據,如下所示:

$this->db->select ( 'c.campaign_name,count(l.business_id) as no_of_leads' ,false)
        ->from ( 'campaign as c' )
        ->join ( 'leads l', 'c.id = l.campaign_id','left')
        ->group_by( 'c.campaign_name')
        ->get();

您應該使用左聯接

$this->db->select('campaign_name, COUNT(campaign_id) AS `No. of leads`');
$this->db->from('campaign');
$this->db->join('lead', 'campaign.id = lead.campaign_id', 'left');
$this->db->group_by( 'campaign.campaign_name' )
$result = $this->db->get();

其他人發布了查詢生成器代碼,因此這是您需要的原始SQL

SELECT
   c.campaign_name,
   COUNT(l.id) as total_leads
FROM
   campaigns AS c
LEFT JOIN
   leads AS l ON c.id = l.campain_id
GROUP BY c.id

左聯接很重要,因為您需要計算一下:

 realestate                         0

您在campaigns中有ID為4的記錄,而在該廣告系列ID中的leads沒有記錄。 我還將對PKEY進行計數和分組,您將獲得更好的索引編制和更高的可靠性(因為我們知道它們是唯一的)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM