2015-06-21 89 views
0

现状PostgreSQL的模板迭代

吨=模板表

i0 i1 i2 i3 i4 i5 
aa ab cd ef gh ij 
aa de gg jj kk dd 

R =验证TABEL

i0 i1 i2 i3 i4 i5 
xx ab cd ef gh ij 
xx de gg jj kk dd 
yy ee cd ef gh ij 
yy de gg jj kk dd 
zz de gg jj kk dd 

结果与模板和验证

aa ab cd ef gh ij xx ab cd ef gh ij 
aa de gg jj kk dd xx de gg jj kk dd 
aa ab cd ef gh ij 
        yy ee cd ef gh ij 
aa de gg jj kk dd yy de gg jj kk dd 
aa ab cd ef gh ij zz de gg jj kk dd 
aa de gg jj kk dd 

问:

我如何可以验证模板表在 验证表?全部加入仅限于全部 我必须验证xx和yy以及zz的模板。 我是否应该在for循环中使用函数,并且使用模板表完全加入 ?

+0

你不能有一个具有不同数量的不同行的列的结果。而你的混淆数据并不能真正帮助你理解这个问题 –

回答

0

最简单的解决方案是将CROSS JOIN模板的表格与一列中的值设为xx'yy , zz`。

SELECT t.*, v.* 
FROM template AS t 
CROSS JOIN (SELECT 'xx' AS i0 
      UNION ALL 
      SELECT 'yy' 
      UNION ALL 
      SELECT 'zz') AS foo 
FULL JOIN verify AS v 
    ON (foo.i0,t.i1,t.i2,t.i3,t.i4,t.i5) = (v.i0, v.i1, v.i2, v.i3, v.i4, v.i5); 

SQL Fiddle