我目前有2个查询(我从互联网上的各个页面中获取),它们执行以下操作:
这些查询分别是
select
c.colname,
c.coltype,
c.collength
from
syscolumns c,
systables t
where
t.tabname = 'user' and
c.tabid = t.tabid
和
select
c.colname,
c.colno,
o.constrtype
from
systables t,
sysconstraints o,
sysindexes i,
syscolumns c
where
t.tabname = 'user' and
c.tabid = t.tabid and
o.tabid = t.tabid and
i.tabid = t.tabid and
o.constrtype in ('R', 'P') and
o.idxname = i.idxname and
( colno = part1 or
colno = part2 or
colno = part3 or
colno = part4 or
colno = part5 or
colno = part6 or
colno = part7 or
colno = part8 or
colno = part10 or
colno = part9 or
colno = part11 or
colno = part12 or
colno = part13 or
colno = part14 or
colno = part15 or
colno = part16 );
我想将这些查询连接在一起,以便结果包含类似的内容
colname
,colno
,collength
,constrtype
。我相信LEFT OUTER JOIN是我需要的,但我不太清楚如何形成它所以任何帮助都会受到赞赏。
答案 0 :(得分:5)
我对Informix的元数据表结构并不熟悉,所以我假设您的查询是正确的。
我想你只想获得完整的专栏。以下查询应该执行此操作:
select c.colname, c.colno, o.constrtype
from systables t left outer join
syscolumns c
on c.tabid = t.tabid left outer join
sysconstraints o
on o.tabid = t.tabid left outer join
sysindexes i
on i.tabid = t.tabid and
o.idxname = i.idxname
where t.tabname = 'user' and
o.constrtype in ('R', 'P') and
colno in (part1, part2, part3, part4, part5, part6, part7, part8, part9, part10,
part11, part12, part13, part14, part15, part16
)
我更改了查询以使用现代连接语法。您不应在from
子句中使用逗号。相反,您应该使用显式连接语法。另外,我将比较序列更改为部分in
语句。最后,我从表开始并进行所有连接left outer join
s。