Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgres SQL查询未标识该列_Sql_Postgresql_Group By_Having - Fatal编程技术网

Postgres SQL查询未标识该列

Postgres SQL查询未标识该列,sql,postgresql,group-by,having,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.cr

我的查询有一个很大的问题,出于某种原因,我就是不能得到一个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
我对这两个表的方案:

你知道我必须做什么才能让这个查询生效吗?非常感谢,如果需要更多信息,请告诉我。

您的报价错误:

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的列。也就是说,列名中会有一个句号。

太棒了,非常感谢!!!我知道这是一个愚蠢的错误,但当我向我的数据库教授提问时,他都没有发现。你自己的!通常应避免使用带引号的标识符。他们比他们值得的麻烦多。如果你从不使用双引号,你会发现这些列是用双引号创建的,这使得它们区分大小写。createdAt是一个不同的列名,那么createdAt-leofontes必须始终使用双引号
 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;