Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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
Sql 当使用;及;在where子句中,get error“;参数的类型必须为boolean";_Sql_Postgresql - Fatal编程技术网

Sql 当使用;及;在where子句中,get error“;参数的类型必须为boolean";

Sql 当使用;及;在where子句中,get error“;参数的类型必须为boolean";,sql,postgresql,Sql,Postgresql,错误:和的参数必须是布尔类型,而不是可变字符类型 SELECT partno, count(manufacturer) FROM components WHERE partno IN (SELECT partno FROM productions WHERE year = 2005 AND attr is NULL )

错误:和的参数必须是布尔类型,而不是可变字符类型

SELECT 
    partno, 
    count(manufacturer) 
FROM 
    components 
WHERE 
    partno IN (SELECT partno FROM productions 
               WHERE 
                    year = 2005
                AND attr is NULL
              ) 
GROUP BY partno
UNION
SELECT 
    partno, 
    count(manufacturer) 
FROM components 
WHERE 
    partno IN (SELECT partno FROM productions 
               WHERE 
                   year = 2005
               AND attr is NULL
              ) 
GROUP BY partno
) 
AND (
        partno NOT IN (SELECT partno FROM components
    )
); 

union后的部分将包括非生产组件中的所有零件号(它们应计为0)

您有一个括号太多(在
attr为NULL后)
并且您有一个聚合函数(第二部分中的
count
),没有
分组依据。你是说:

select partno, count(manufacturer) 
from components 
where partno in 
(
   select partno from productions where year=2005 and attr is NULL
) 
group by partno

UNION

select partno, count(manufacturer) 
from components 
where partno in 
(
    select partno from productions where year=2005 and attr is NULL
) 
AND partno not in (select partno from components)
group by partno; 

您在联合体的第二部分有一个结束括号
错误(或者您在
year=2005
之前缺少一个开始括号)。联合体的第二部分要检索什么?如果我们删除可疑的括号,我们似乎最终会要求
组件
中不存在的行。这似乎有点问题,怎么会有问题?联合体的第一部分不计算它们。我将再次重复“来自
组件
的行,这些行在
组件
中不存在”-这怎么会是一个非空集?现在它是说components.partno必须出现在group by子句中。此答案更正了您原来的查询,但是第二个
SELECT
语句没有向结果行集添加任何信息:第二个SELECT返回的所有行都存在于第一个SELECT中,但随后它们被丢弃,因为
UNION
操作符删除了重复的行。只是想澄清一下:这不是这个答案的问题,这是原始查询的问题。@Celeritas:正如Gerardo指出的,我们需要你的输入来知道你想要得到什么!希望我的答案能纠正语法错误,但不是逻辑错误!