Postgres SQL查询无法识别列

时间:2016-10-10 03:09:08

标签: sql postgresql group-by having

我的查询存在很大问题,由于某种原因,我无法使其中一个WHERE子句起作用。

这是我的SQL:

SELECT COUNT(*) FROM "diets" JOIN "meals" on "idDiet" = "dietId" 
WHERE kcal != 0 AND "diets.createdAt" > '2016-10-2' 
GROUP BY "userIdUser" HAVING count(*) >= 5;

我的错误:

ERROR:  column "diets.createdAt" does not exist

我对两个表的计划:

enter image description here enter image description here

关于我必须做什么才能让这个查询起作用的任何想法?非常感谢,如果需要更多信息,请告诉我。

2 个答案:

答案 0 :(得分:2)

您的报价错误:

SELECT COUNT(*)
FROM "diets" JOIN
     "meals" 
     ON "idDiet" = "dietId" 
WHERE kcal <> 0 AND "diets"."createdAt" > '2016-10-2' 
GROUP BY "userIdUser"
HAVING count(*) >= 5;

双引号围绕标识符。一个限定的列引用,例如diets.createdAt由两个标识符组成,因此每个标识符都需要有引号(如果你有引号)。

否则,您指的是名称为"diets.createdAt"的列。也就是说,列名称中将包含句点。

答案 1 :(得分:0)

 SELECT COUNT(*) FROM diets a  JOIN  meals b on a.idDiet = b.dietId 
 WHERE a.kcal <> 0 AND a.createdAt > '2016-10-2' 
 GROUP BY a.userIdUser HAVING count(*) >= 5;