隨筆-4  評(píng)論-0  文章-0  trackbacks-0
          様々な連結(jié)テーブルが作成できるが、良く使うものはビュー(create view) に
          しておくと効率が良い。各種各樣的連接表中,有的對(duì)視圖也起作用。
          結(jié)合は、テーブルとテーブル、ビューとビュー、テーブ ルとビューなど複雑にできる。(テーブル連結(jié))連接可以在數(shù)據(jù)表和數(shù)據(jù)表之間,視圖和視圖之間,數(shù)據(jù)表和視圖之間復(fù)雜的進(jìn)行。
          ■単純結(jié)合 簡(jiǎn)單連接
          ?現(xiàn)実的に単純結(jié)合を使う機(jī)會(huì)はないだろう。實(shí)際上簡(jiǎn)單結(jié)合沒(méi)有什么使用的機(jī)會(huì)。
          次の例では、受注m の各レコードに 品番m の全レコードが結(jié)合される。
          在下面的例子中,在受注m的各種記錄里,品番m的所有記錄都被結(jié)合了。
          受注m のレコード數(shù) x 品番m のレコード數(shù)の結(jié)果が問(wèn)い合わされる。
            受注m的記錄數(shù)*品番m的記錄數(shù)的結(jié)果被查詢出來(lái)。 select * from sak.受注m, sak.品番m; ■等価結(jié)合 等價(jià)連接 ?等価結(jié)合は、特定のキーで表を結(jié)合します。等價(jià)連接是用特定的鍵來(lái)進(jìn)行表的結(jié)合的。
          條件のどちらかのデータが存在しない場(chǎng)合、結(jié)果セットには含まれません。
          如果有條件在數(shù)據(jù)表里不存在,在結(jié)果集里就沒(méi)有這一條記錄。
          現(xiàn)実的には外部結(jié)合が一番使いやすいと思います。在實(shí)際上,外部結(jié)合是最容易使用的。
          select 受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù) from sak.受注m, sak.品番m where 受注m.品番 = 品番m.品番 ; ?列の別名定義は、as を指定してもよい。列的別名指定,也可以用as來(lái)實(shí)現(xiàn)。
          結(jié)合テーブルに同じ項(xiàng)目名が存在する場(chǎng)合は、どちらのテーブル項(xiàng)目か指定するため、テーブル名で修飾する。(受注m.品番)
          在連接表中如果有相同的項(xiàng)目名存在,為了讓每一個(gè)項(xiàng)目都被指定,就用項(xiàng)目名來(lái)修飾。
          select 受注番號(hào), 受注m.品番 as 品番, 品番m.入庫(kù)數(shù) as 入庫(kù)數(shù) from sak.受注m, sak.品番m where 受注m.品番 = 品番m.品番; ?inner join を使用して、等価結(jié)合することもできます。(インナージョイン)
          使用inner join,也可以進(jìn)行等價(jià)連接。
          select 受注番號(hào), 受注m.品番 as 品番, 品番m.入庫(kù)數(shù) as 入庫(kù)數(shù) from sak.受注m inner join sak.品番m on 受注m.品番 = 品番m.品番; ?3 つ以上の結(jié)合を inner join で指定するには、次のようにする。
          如果有三個(gè)以上要指定inner join 來(lái)進(jìn)行連接的時(shí)候,可以像下面這樣做。
          select * from (sak.受注m inner join sak.品番m on 受注m.品番 = 品番m.品番) inner join sak.得意先m on 受注m.得意先CD = 得意先m.得意先CD; ■非等価結(jié)合 非等價(jià)連接 ?非常に時(shí)間のかかる結(jié)合ですが、必要な場(chǎng)面があるかもしれない。雖然很花時(shí)間,但有時(shí)候也要進(jìn)行下面的檢索。
          なにがしかの範(fàn)囲條件で結(jié)合する場(chǎng)合に使います。和檢索條件的一部分進(jìn)行連接。
          select
          受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù) from sak.受注m, sak.品番m where 受注m.機(jī)種 like substr(品番m.機(jī)種, 1, 2);
          ■外部結(jié)合 外結(jié)合、行結(jié)合、行連結(jié)、テーブル結(jié)合、外部接合
          外部連接 外連接,行連接,表連接,外部連接
          ?外部結(jié)合は、一番よく使用します。外部連接是最經(jīng)常使用的。
          一方の條件に対するデータが存在しなかった場(chǎng)合でも片方のデータを結(jié)果セ ットに含める指定ができます。
          對(duì)于一方的條件即使不存在,也可以使結(jié)果集包含一邊的數(shù)據(jù)。
          次の例では、品番m にない品番の受注m レコードも結(jié)果に含まれます。
          在下面的例子中,在品番m中沒(méi)有的品番受注m記錄的結(jié)果也包含了進(jìn)來(lái)。
          この場(chǎng)合、入庫(kù)數(shù)などの 品番m 項(xiàng)目には NULL がセットされて問(wèn)い合わさ れます。Oracle では、left join、right join を (+) で指定できます。
          這時(shí)候,入庫(kù)數(shù)等的品番m項(xiàng)目里被設(shè)定了NULL值。在oracle里,left join,right join 可以用(+)來(lái)指定。
          (左結(jié)合、右結(jié)合、複數(shù)テーブル問(wèn)い合わせ、複數(shù)テーブル?yún)⒄? (複數(shù)問(wèn)い合わせ、複合テーブル?yún)⒄铡ⅴ欹榨去弗绁ぅ蟆ⅴ楗ぅ去弗绁ぅ?
          (左連接,右連接,多個(gè)表查詢,多個(gè)表參照,左連接,右連接)
          select 受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù) from sak.受注m, sak.品番m where 受注m.品番 = 品番m.品番 (+); select 受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù) from sak.受注m left join sak.品番m on 受注m.品番 = 品番m.品番; ?逆に受注m にない品番の品番m レコードを結(jié)果に含ませることもできます。 現(xiàn)実的には、こういう結(jié)合に意味はありませんが、逆の和もできると言うこ とです。
          ?相反不在受注m里的品番m記錄也可以在結(jié)果里包含。在實(shí)際中,雖然沒(méi)有這么用的,但是(+)也可以放在=之前。
          select 受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù) from sak.受注m, sak.品番m where 受注m.品番 (+) = 品番m.品番; select 受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù) from sak.受注m right join sak.品番m on 受注m.品番 = 品番m.品番; ?三つ以上の表を結(jié)合することもできます。(3 テーブル結(jié)合)
          ?也可以進(jìn)行三個(gè)表以上的表連接。(三表連接)
          次の例では、品番に対する品番m.入庫(kù)數(shù)、得意先CD に対する得意先m.得意 先名を結(jié)合しています。(left join を使用しても良い。)
          在下面的例子中,對(duì)于品番的品番m.入庫(kù)數(shù),對(duì)于得意先CD的得意先m.得意先名來(lái)進(jìn)行連接。(也可以使用左連接)
          select 受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù), 受注m.得意先CD 得意先CD, 得意先m.得意先名 得意先 from sak.受注m, sak.品番m, sak.得意先m where 受注m.品番 = 品番m.品番 (+) and 受注m.得意先CD = 得意先m.得意先CD (+); select 受注番號(hào), 受注m.品番 品番, 品番m.入庫(kù)數(shù) 入庫(kù)數(shù), 受注m.得意先CD 得意先CD, 得意先m.得意先名 得意先 from (sak.受注m left join sak.品番m on 受注m.品番 = 品番m.品番) left join sak.得意先m on 受注m.得意先CD = 得意先m.得意先CD; ?複數(shù)の表を結(jié)合すると修飾が難解になりがちなので、テーブル別名を使うと 良いです。
          如果多個(gè)表進(jìn)行連接,修飾會(huì)變得很復(fù)雜,也可以使用表別名。
          select 受注番號(hào), a.品番 品番, b.入庫(kù)數(shù) 入庫(kù)數(shù), a.得意先CD 得意先CD, c.得意先名 得意先 from sak.受注m a, sak.品番m b, sak.得意先m c where a.品番 = b.品番 (+) and a.得意先CD = c.得意先CD (+); ** 外部結(jié)合を明示するために left join を left outer join、right join を right outer join と書(shū)くこともできる。
          ** 為了明確外部連接,也可以把left join 寫(xiě)成 left outer join, right join寫(xiě)成right outer join。
          (アウタージョイン、レフトアウタージョイン、ライトアウタージョイン)
          (outer join, left outer join, right outer join)
          ■再帰結(jié)合(內(nèi)部結(jié)合) 回歸連接(內(nèi)部結(jié)合) ?再帰結(jié)合は、同じテーブルをテーブル別名を使用して結(jié)合します。
          ?回歸連接是相同的表來(lái)用別名來(lái)進(jìn)行連接的。
          次の例では、得意先m に親得意先CD があるとして、その得意先名を自分自 身と結(jié)合しています。(自己結(jié)合)
          在下面的例子中,以得意先作為父得意先,然后用這個(gè)名字來(lái)進(jìn)行自身連接。
          select a.得意先CD 得意先CD, a.得意先名 得意先, a.親得意先CD 親得意先CD, b.得意先名 得意先 from sak.得意先m a, sak.得意先m b where a.得意先CD = b.親得意先CD (+);
          posted on 2009-09-24 14:42 達(dá)飛Plus 閱讀(152) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 密云县| 噶尔县| 闽侯县| 麦盖提县| 西充县| 三江| 沙河市| 永春县| 古丈县| 古交市| 时尚| 安西县| 稷山县| 闽侯县| 无极县| 肥东县| 宁河县| 上思县| 阆中市| 郸城县| 桂平市| 临清市| 巢湖市| 南开区| 汉中市| 盐边县| 浦城县| 武乡县| 贵阳市| 万安县| 离岛区| 郯城县| 禹城市| 崇信县| 江源县| 钟山县| 富锦市| 宜良县| 元氏县| 通化市| 福建省|