2014-10-30 180 views
1

我试图使用具有的属性。(d0t)在该属性格式的名称,但它似乎是PostgreSQL是困惑,认为我试图访问表属性。PostgreSQL的混淆财产表

这里是SQL查询我试图运行

select count(metadata.username), metadata.username from appointment join appointment_wrapper a on a.id=appointment_wrapper_id where property='state' and string_value='Kano' and timestamp > '2014-08-01' and timestamp < '2014-11-01' group by metadata.username; 

当我运行一个查询它说

ERROR: missing FROM-clause entry for table "metadata" 

当我添加引号,它说

ERROR: non-integer constant in GROUP BY 

任何如何解决这个问题?

谢谢

+0

为了确保您在select和group by子句中引用了列名? – mabi 2014-10-30 16:08:22

+0

我试图用它产生相同的错误不带引号 SELECT COUNT('metadata.username'),'自获委任加入metadata.username'一个appointment_wrapper上a.id = appointment_wrapper_id其中property =“状态”使用反引号和'string_value ='Kano'和时间戳>'2014-08-01'和时间戳''2014-11-01'组'由metadata.username'; – diokey 2014-10-30 16:17:33

+0

我认为后面的引号只适用于MySQL,双引号适用于Postgres。请参阅@mabi的答案。 – 2014-10-30 16:25:55

回答

2

什么你要找的是你在引号引起你的列名,以防止它被解释为一个关键字获得"quoted identifier"

SELECT count("metadata.username") from app group by "metadata.username"; 

刚一个reminder,你真的,真的想避免在你的专栏或表名称中保留字符带来的混淆。

+0

+1为“真的,真的想避免这种” – 2014-10-30 18:38:29