Informix 双重嵌套的 MULTISET 保持为空
Informix doubly nested MULTISET remains empty
鉴于此架构:
create table a (id int);
create table b (id int, a_id int, c_id int);
create table c (id int);
insert into a values (1);
insert into a values (2);
insert into b values (1, 1, 1);
insert into b values (2, 1, 1);
insert into b values (3, 2, 4);
insert into b values (4, 2, 2);
insert into c values (1);
insert into c values (2);
insert into c values (3);
insert into c values (4);
我试过运行这样的查询:
select
a.id,
multiset(
select
b.id,
multiset(
select c.id
from c
where c.id = b.c_id
)
from b
where b.a_id = a.id
) m
from a
order by a.id
但输出表明最内嵌套的 MULTISET
查询不起作用。输出是:
id 1
m MULTISET{ROW(1,MULTISET{}),ROW(2,MULTISET{})}
id 2
m MULTISET{ROW(3,MULTISET{}),ROW(4,MULTISET{})}
这是已知限制还是错误?我该如何解决这个限制?我正在使用 IBM Informix 动态服务器版本 14.10.FC5DE
,似乎有一个 ORDER BY
相关的错误。删除 ORDER BY
子句:
select
a.id,
multiset(
select
b.id,
multiset(
select c.id
from c
where c.id = b.c_id
)
from b
where b.a_id = a.id
) m
from a
现在的输出是预期的:
id 1
m MULTISET{ROW(1,MULTISET{ROW(1)}),ROW(2,MULTISET{ROW(1)})}
id 2
m MULTISET{ROW(3,MULTISET{ROW(4)}),ROW(4,MULTISET{ROW(2)})}
看来绝对是 Informix 中的错误。
鉴于此架构:
create table a (id int);
create table b (id int, a_id int, c_id int);
create table c (id int);
insert into a values (1);
insert into a values (2);
insert into b values (1, 1, 1);
insert into b values (2, 1, 1);
insert into b values (3, 2, 4);
insert into b values (4, 2, 2);
insert into c values (1);
insert into c values (2);
insert into c values (3);
insert into c values (4);
我试过运行这样的查询:
select
a.id,
multiset(
select
b.id,
multiset(
select c.id
from c
where c.id = b.c_id
)
from b
where b.a_id = a.id
) m
from a
order by a.id
但输出表明最内嵌套的 MULTISET
查询不起作用。输出是:
id 1
m MULTISET{ROW(1,MULTISET{}),ROW(2,MULTISET{})}
id 2
m MULTISET{ROW(3,MULTISET{}),ROW(4,MULTISET{})}
这是已知限制还是错误?我该如何解决这个限制?我正在使用 IBM Informix 动态服务器版本 14.10.FC5DE
ORDER BY
相关的错误。删除 ORDER BY
子句:
select
a.id,
multiset(
select
b.id,
multiset(
select c.id
from c
where c.id = b.c_id
)
from b
where b.a_id = a.id
) m
from a
现在的输出是预期的:
id 1
m MULTISET{ROW(1,MULTISET{ROW(1)}),ROW(2,MULTISET{ROW(1)})}
id 2
m MULTISET{ROW(3,MULTISET{ROW(4)}),ROW(4,MULTISET{ROW(2)})}
看来绝对是 Informix 中的错误。