SQL语法:outer table_name

时间:2015-07-26 23:25:23

标签: sql

我有一个带有此查询的项目,但我没有收到任何内容。

Select 
    c.prop_table1,
    (SELECT max(t.taux_table_x) FROM DB3:table_x t  
     WHERE month(t.date_prop_x) = month(c.prop_of_x) 
     AND year(t.date_prop_x) = year(c.prop_of_x)
    )*1 table_x, 
    ''||date(c.prop_of_x) Alias
FROM DB1:table_name1 d, DB1:table_name2 c, outer DB2:table_name a 
WHERE 
    c.value_i  = d.value_i AND 
    c.property =d.property  AND 
    (c.num_table_name2 =a.no_dos_adh OR c.ref_cred=a.no_dos_adh) AND 
     c.abcd not in ('P','S') 

我不知道outer究竟在表达什么。是左/右还是完全加入?或者是别的什么? 感谢大家的帮助

2 个答案:

答案 0 :(得分:0)

  

我不知道外部正在表达的是左/右或完全加入?

不能承受sql代码的语法问题,outer是左右设置的联合。在您的示例中,这是等效的

(table1,table2) union (table3)

但是你的SQL非常不完整,无法提供更具体的答案。

答案 1 :(得分:0)

看起来很像您的查询是使用(IBM)Informix SQL方言编写的。如果是这种情况,那么outer应该是左外连接,因为它左侧有一个表(我相信右连接将是from outer tab1, tab2

语法早于SQL-92标准,但仍应与Informix有效(?)。

重写为标准SQL,它可能如下所示:

SELECT 
    c.prop_table1,
    (
     SELECT max(t.taux_table_x) FROM DB3:table_x t 
     WHERE month(t.date_prop_x) = month(c.prop_of_x) 
       AND year(t.date_prop_x) = year(c.prop_of_x)
    )*1 table_x, 
    '' || date(c.prop_of_x) Alias
FROM 
    DB1:table_name1 d
INNER JOIN 
    DB1:table_name2 c ON c.value_i  = d.value_i AND c.property = d.property
LEFT JOIN 
    DB2:table_name a ON (c.num_table_name2 = a.no_dos_adh OR c.ref_cred = a.no_dos_adh) 
WHERE 
    c.abcd not in ('P','S')