Sql Query返回单行,但不是全部

时间:2017-04-07 11:32:26

标签: mysql sql database

我正在尝试使用单个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-07approved1状态应为SELECT title, status From Campaigns WHERE campaign_date = '2017-04-07' AND approved = 1 ,但我的查询返回只有单行,而不是所有广告系列。

如果我这样做,它会返回所有..

{{1}}

但我也希望显示公司名称,并且也希望计算所有订阅者。我做错了什么?

2 个答案:

答案 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