老SQL? FROM 后的多个表

Old SQL? multiple tables after FROM

我正在尝试重写以下由 Impromptu 部分生成的查询。出于某种原因,我无法理解 FROM 之后的多个 tables 和后面的连接嵌套。我一直使用 "master" table 然后加入任何我需要的东西。即 select 来自,在 x=x 上左连接 (table) 在 x=x 上左连接 (table) 等等。

在这件事上,我和父母等人在一起时遇到了困难。用 "normal" 查询风格写成什么样子?非常感谢!

select 
    T6."dateofservice"
    , getdate(), -20000 - (1 - convert(float(53),-2) / abs(-2)) / 2
    , T1."pgrp_specialty"
    , T1."pgrp_prov_combo"
    , T2."patsex"
    , T3."restricted"
    , T2."patdob"
    , T2."patdecdate"
    , T2."acctno"
    , T2."patno"
from 
    "acctdemo_t" T3, "transaction_t" T5,
    ("patdemo_t" T2 
     LEFT OUTER JOIN ("provcode_t" T8 
                      LEFT OUTER JOIN "provalt_t" T1 on T8."px" = T1."accesspractice" and T8."provcode" = T1."accessprovidercode") on T2."provcode" = T8."provcode") 
 LEFT OUTER JOIN "insset_t" T4 on T2."acctno" = T4."acctno" and T2."patno" =    T4."patno", "charge_t" T6 
   LEFT OUTER JOIN "poscode_t" T7 on T6."poscode" = T7."poscode"

where 
    T2."patsex" <> 'U' 
    and T7."posid" = '3' 
    and T6."correction" = 'N' 
    and T5."txtype" = 'C' 
    and (T4."defaultset" = 'Y' or 
           (T4."inssetno" = 0 or T4."inssetno" is null) 
         and T4."defaultset" is null) 
    and T6."chgno" = T5."chgno" 
    and T2."patno" = T6."patno" 
    and T2."acctno" = T6."acctno" 
    and T2."acctno" = T3."acctno"

SQL写成多个table,用逗号分隔隐含INNER JOIN,where子句作为连接子句。例如,

select * from table1 a, table2 b
where a.id = b.id

等同于:

select * from table1 a inner join table2 b on a.id = b.id

因此,在您的情况下,这部分:

from "acctdemo_t" T3
, "transaction_t" T5

表示 acctdemo_ttransaction_t 之间的内连接。

还有-第三部分:

("patdemo_t" T2 LEFT OUTER JOIN 
    ("provcode_t" T8 LEFT OUTER JOIN "provalt_t" T1 on T8."px" = T1."accesspractice" and T8."provcode" = T1."accessprovidercode") 
        on T2."provcode" = T8."provcode") 

实际上是一个 table 集合,它带有自己的子句,在这个连接中基本上充当 table 。也与内部连接连接,因为它添加了逗号。

我相信这绝对可以写得更具可读性,并且正在创建的内联 table 集不会对性能有好处,但这完全取决于您拥有的记录数。