我正在尝试使用单个SQL查询获取记录。数据库中有许多记录,但只返回1行。
例如: 它返回记录号。 1.如果我删除此记录,则返回记录号。 2.因为有很多记录。我希望它显示所有记录。
这是我的查询。
SELECT camp.title, camp.status, c.name, b.base_id, count(s.base_id) as subscribers
FROM campaigns as camp
JOIN company as c ON c.id = camp.company_id
JOIN campaign_numbers as b ON b.campaign_id = camp.id
JOIN base_numbers as s ON s.base_id = b.base_id
WHERE camp.campaign_date = '2017-04-07' AND camp.approved = 1
我实际上希望我的查询返回campaigns
current date
的所有2017-04-07
,approved
和1
状态应为SELECT title, status
From Campaigns
WHERE campaign_date = '2017-04-07' AND approved = 1
,但我的查询返回只有单行,而不是所有广告系列。
如果我这样做,它会返回所有..
{{1}}
但我也希望显示公司名称,并且也希望计算所有订阅者。我做错了什么?
答案 0 :(得分:2)
SELECT
中有一个聚合函数,没有GROUP BY
。在大多数数据库中,这将返回错误。在MySQL中,这是一个总是返回一行的聚合查询。
大概你想要GROUP BY
:
GROUP BY camp.title, camp.status, c.name, b.base_id
答案 1 :(得分:0)
尝试如下
SELECT camp.title, camp.status, c.name, b.base_id, count(s.id) as subscribers
FROM campaigns as camp
Left JOIN company as c ON c.id = camp.company_id
Left JOIN campaign_numbers as b ON b.campaign_id = camp.id
Left JOIN base_numbers as s ON s.base_id = b.base_id
WHERE camp.campaign_date = '2017-04-07' AND camp.approved = 1
group by camp.title, camp.status, c.name, b.base_id