2

私は古い学校で、常に「+」記号を使用してアウターを表してきましたが、この sql は sql サーバーで機能していません。次のSQLを新しい「左外部結合」形式に変換するのを手伝ってくれませんか。

select frdonmst.FRID, 
       fradrmst.adrseq, 
       fax.phone   as fax, 
       phone.phone as phone 
from   frdonmst, 
       fradrmst, 
       frphnmst fax, 
       frphnmst phone 
where  frdonmst.frid = fradrmst.frid 
       and frdonmst.adrseq = fradrmst.adrseq 
       and ( frdonmst.frid = fax.frid(+) 
             and frdonmst.adrseq = fax.adrseq(+) 
             and fax.phtyp(+) = 'FAX1' ) 
       and ( frdonmst.frid = phone.frid(+) 
             and frdonmst.adrseq = phone.adrseq(+) 
             and phone.phtyp(+) = 'D1' ) 
4

2 に答える 2

5

試してみますが、そのような用途でプラス記号が使用されているのを見たことがありません。: )

SELECT a.FRID
    , b.adrseq
    , fax.phone AS fax
    , phone.phone AS phone
FROM frdonmst a
JOIN fradrmst b
    ON a.adrseq = b.adrseq
LEFT JOIN frphnmst fax
    ON a.frid = fax.frid
    AND a.adrseq = fax.adrseq
    AND fax.phtyp = 'FAX1'
LEFT JOIN frphnmst phone
    ON a.frid = phone.frid
    AND a.adrseq = phone.adrseq
    AND phone.phtyp = 'D1'

PS これを手で入力したので、単語を使用して名前を付けることを丁寧にお勧めします。

于 2012-06-22T21:31:17.267 に答える
0

これがあなたが探しているものであることを願っています:

select 
frdonmst.FRID, 
fradrmst.adrseq, 
faxTable.phone as fax, 
phoneTable.phone as phone 
FROM (((frdonmst LEFT JOIN fradrmst ON frdonmst.adrseq = fradrmst.adrseq and frdonmst.adrseq = fradrmst.adrseq)
                 LEFT JOIN frphnmst AS faxTable ON frdonmst.frid = faxTable.frid AND frdonmst.adrseq = faxTable.adrseq)
                 LEFT JOIN frphnmst AS phoneTable ON frdonmst.frid = phoneTable.frid AND frdonmst.adrseq = phoneTable.adrseq)
WHERE faxTable.phtyp='FAX1' AND phoneTable.phtyp='D1'
于 2012-06-22T21:31:43.333 に答える