我有一个表活动,其中包含发送活动邮件的详细信息。如何使用连接编写此查询?
campaign_table: campaign_id campaign_name flag
1 test1 1
2 test2 1
3 test3 0
另一个表具有活动活动细节的活动活动。
campaign_activity: campaign_id is_clicked is_opened
1 0 1
1 1 0
2 0 1
2 1 0
我想用标志值3和值为1和列数is_clicked列与is_opened值1在一个查询数所有广告活动。
ie. campaign_id campaign_name numberofclicks numberofopens
1 test1 1 1
2 test2 1 1
我这样做是使用子查询与查询:
select c.campaign_id,c.campaign_name,
(SELECT count(campaign_id) from campaign_activity WHERE campaign_id=c.id AND is_clicked=1) as numberofclicks,
(SELECT count(campaign_id) from campaign_activity WHERE campaign_id=c.id AND is_clicked=1) as numberofopens
FROM
campaign c
WHERE c.flag=1
但人们说,使用子查询是不是一个很好的编码习惯,你必须使用联接,而不是子查询。但我不知道如何使用连接获得相同的结果。我咨询了一些同事,他们说在这种情况下不可能加入。使用连接可以得到相同的结果吗?如果是,请告诉我如何。
它通常OK使用WHERE子句中的子查询,但要避免使用它们作为列。 – 2010-05-06 09:39:36