様々な連結テーブルが作成できるが、良くうものはビュ?create view) ? しておくと効率が良い?font color="#000000">各种各样的连接表中,有的对视图也起作用?br /> i合は、テヹ{ルとテーブル、ビューとビュー、テヹ{ ルとビュヹ{ど複雑にできる?テーブル連結)q接可以在数据表和数据表之间Q视囑֒视图之间Q数据表和视图之间复杂的q行?/font>
■単純結?单连?/span> ?ni)実的に単純結合をѝ?x)はないだろう?span style="color: #ff0000">实际上简单结合没有什么用的Z(x)?br /> ơの例では、受注m の各レコヹ{?品番m の全レコヹ{が結合される?br /> 在下面的例子中,在受注m的各U记录里Q品番m的所有记录都被结合了(jin)?br /> 受注m のレゟ냼ド数 x 品番m のレゟ냼ド数の結果が問い合わされる?br /> 受注m的记录数*品番m的记录数的结果被查询出来?/span> select * from sak.受注m, sak.品番m; ■等価結?{h(hun)q接 ?ni)価結合は、特定のキーで表を結合します?span style="color: #ff0000">{h(hun)q接是用特定的键来进行表的结合的?/span>
条gのどちらかのデーѝ存在しない場合、結果セットには含まれません?br /> 如果有条件在数据表里不存在,在结果集里就没有q一条记录?/span>
珑֮的には外部結合が一番いやすいと思います?span style="color: red">在实际上Q外部结合是最Ҏ(gu)使用的?br /> select 受注番号, 受注m.品番 品番, 品番m.入n?入n? from sak.受注m, sak.品番m where 受注m.品番 = 品番m.品番 ; dの別名定は、as を指定してもよい?span style="color: #ff0000">列的别名指定Q也可以用as来实现?/span>
i合テーブルに同じ項目名が存在する場合は、どちらのテヹ{ル項目か指定するため、テヹ{ル名で修飾する?受注m.品番)
在连接表中如果有相同的项目名存在Qؓ(f)?jin)让每一个项目都被指定,q目名来修饰?br /> select 受注番号, 受注m.品番 as 品番, 品番m.入n?as 入n? from sak.受注m, sak.品番m where 受注m.品番 = 品番m.品番; ・inner join を用して、等価結合することもできます?インナージョイン)
使用inner joinQ也可以q行{h(hun)q接?br /> select 受注番号, 受注m.品番 as 品番, 品番m.入n?as 入n? from sak.受注m inner join sak.品番m on 受注m.品番 = 品番m.品番; ? つ以上のi合?inner join で指定するには、次のようにする?br /> 如果有三个以上要指定inner join 来进行连接的时候,可以像下面这样做?br /> select * from (sak.受注m inner join sak.品番m on 受注m.品番 = 品番m.品番) inner join sak.得意先m on 受注m.得意先CD = 得意先m.得意先CD; ■非{Mi合 非等仯?/span> ・非常に時間のかかるi合ですが、必要な場面があるかもしれない?span style="color: red">虽然很花旉Q但有时候也要进行下面的(g)索?br /> なにがしかの囲条gで結合する場合にѝます?span style="color: red">和检索条件的一部分q行q接?
select 受注番号, 受注m.品番 品番, 品番m.入n?入n? from sak.受注m, sak.品番m where 受注m.種 like substr(品番m.種, 1, 2);
■外部結?外結合、行i合、行連結、テヹ{ル結合、外部接?br /> 外部q接 外连接,行连接,表连接,外部q接
d部結合は、一番よく用します?span style="color: red">外部q接是最l常使用的?br /> 一斏V条gに対するデーѝ存在しなかった場合でも片斏Vデーѝi果? ットに含める指定ができます?br /> 对于一方的条g即不存在,也可以ɾl果集包含一边的数据?br /> ơの例では、品番m にない品番の受注m レコヹ{も結果に含まれます?br /> 在下面的例子中,在品番m中没有的品番受注m记录的结果也包含?jin)进来?br /> この場合、入庫数など?品番m 項目には NULL がセットされて問い合わさ れます。Oracle では、left join、right join ?(+) で指定できます?br /> q时候,入库数等的品番m目里被讑֮?jin)NULL倹{在oracle里,left join,right join 可以?+)来指定?br /> (左結合、右i合、複数テヹ{ル問い合わせ、複数テヹ{ル参? (複数問い合わせ、複合テヹ{ル参照、レフトジョイン、ライトジョイン)
(左连接,双接,多个表查询,多个表参照,左连接,双?
select 受注番号, 受注m.品番 品番, 品番m.入n?入n? from sak.受注m, sak.品番m where 受注m.品番 = 品番m.品番 (+); select 受注番号, 受注m.品番 品番, 品番m.入n?入n? from sak.受注m left join sak.品番m on 受注m.品番 = 品番m.品番; ・逆に受注m にない品番の品番m レコヹ{を結果に含ませることもできます? 珑֮的には、こういう結合に意味はありませんが、逆の和もできるとaうこ とです?br /> ?ni)反不在受注m里的品番m记录也可以在l果里包含。在实际中,虽然没有q么用的Q但?+)也可以放?之前?br /> select 受注番号, 受注m.品番 品番, 品番m.入n?入n? from sak.受注m, sak.品番m where 受注m.品番 (+) = 品番m.品番; select 受注番号, 受注m.品番 品番, 品番m.入n?入n? from sak.受注m right join sak.品番m on 受注m.品番 = 品番m.品番; Mつ以上の表をi合することもできます?3 テーブルi合)
M可以q行三个表以上的表连接。(三表q接Q?/span>
ơの例では、品番に対する品番m.入n数、得意先CD に対する得意先m.得意 先名を結合しています?left join を用しても良い?
在下面的例子中,对于品番的品番m.入库敎ͼ对于得意先CD的得意先m.得意先名来进行连接。(也可以用左q接Q?br /> select 受注番号, 受注m.品番 品番, 品番m.入n? 入n? 受注m.得意先CD 得意先CD, 得意先m.得意先名 得意? from sak.受注m, sak.品番m, sak.得意先m where 受注m.品番 = 品番m.品番 (+) and 受注m.得意先CD = 得意先m.得意先CD (+); select 受注番号, 受注m.品番 品番, 品番m.入n? 入n? 受注m.得意先CD 得意先CD, 得意先m.得意先名 得意? from (sak.受注m left join sak.品番m on 受注m.品番 = 品番m.品番) left join sak.得意先m on 受注m.得意先CD = 得意先m.得意先CD; ・複数の表をi合すると修飾が難解になりがちなので、テヹ{ル別名をѝ? 良いです?br /> 如果多个表进行连接,修饰?x)变得很复杂Q也可以使用表别名?br /> select 受注番号, a.品番 品番, b.入n? 入n? a.得意先CD 得意先CD, c.得意先名 得意? from sak.受注m a, sak.品番m b, sak.得意先m c where a.品番 = b.品番 (+) and a.得意先CD = c.得意先CD (+); ** 外部i合を明Cするために left join ?left outer join、right join ?right outer join と書くこともできる?br /> ** Z(jin)明确外部q接Q也可以把left join 写成 left outer join, right join写成right outer join?br /> (アウѝジョイン、レフトアウѝジョイン、ライトアウѝジョイン)
Qouter join, left outer join, right outer joinQ?br /> ■再帰結?内部i合) 回归q接Q内部结合)(j) d帰結合は、同じテヹ{ルをテーブル別名を用して結合します?br /> d归连接是相同的表来用别名来进行连接的?br /> ơの例では、得意先m に親得意先CD があるとして、その得意先名を自分? wとi合しています?自己i合)
在下面的例子中,以得意先作ؓ(f)父得意先Q然后用q个名字来进行自w连接?br /> select a.得意先CD 得意先CD, a.得意先名 得意? a.親得意先CD 親得意先CD, b.得意先名 得意? from sak.得意先m a, sak.得意先m b where a.得意先CD = b.親得意先CD (+);
単体テスト迄ですので、OSなどは厳密に合わせる必要?br /> ありませんので、その踂(jng)りは参考にして下さい?/p>
--------------------------------------------------------------
QPc(din)バ:(x)WebOTX Application Server Web Edition V8.1
Apache HTTP Server 2.0.x
Tomcat 6.0.x、J2SE 5.0.x
Windows Server 2008 Standard (EMT64)
フレヹ{ワーク:(x)R21開発基盤(Java/Strus)
帳票QPDF操作QCoReports for java)
EXCEL操作(Microsoft Office 2007)
Qc(din)?Oracle 11g/R1 (11.0.x)
HP-UX 11iv3
--------------------------------------------------------------