我在Netezza有3张桌子。
表1:商店
// Forward declarations.
void Add();
void Divide();
void Multiply();
void Subtract();
//...
switch(menu_choice)
{
case '*': Multiply(); break;
case '+': Add(); break;
case '/': Divide(); break;
case '-': Subtract(); break;
default: // for you to implement
}
表2:城市
CREATE TABLE STORES
(
STORE_NAME CHARACTER VARYING(10),
STORE_TYPE CHARACTER VARYING(10)
);
表3:CITIES_STORES
CREATE TABLE CITIES
(
CITY CHARACTER VARYING(10)
);
我需要找到所有城市中存在的store_type。所以我试图通过以下方式做到这一点。如果是特定的,
CREATE TABLE CITIES_STORES
(
STORE_TYPE CHARACTER VARYING(10),
CITY CHARACTER VARYING(10)
);
(显示在store_type
表格中),我找不到Stores
不存在的任何州,那么store_type
就是我的答案。
我编写了以下查询并在Netezza中运行:
store_type
但它出现错误
错误:(2)不支持这种形式的相关查询 - 请考虑 重写
请告诉我哪里出错了。这是Netezza数据库的任何问题吗?
答案 0 :(得分:0)
一般来说,Netezza中的相关子查询是个坏主意。有很多好的资源可以表明这一点。事实上,Netezza尝试确定equivalent join syntax for you而不是按照书面形式执行语句。如果不能,则会出现错误。
要绕过它,只需在第一次写出等效的连接。
select distinct
store_type
from
stores str
left outer join cities_stores cts using (store_type)
left outer join cities cit using (city)
where
city is null
注意:您说您想要查找所有城市中都存在的store_type
,但您的语句会返回不存在于任何城市中的store_type
城市。我重写了你的SQL,而不是你在问题中指出的那些。