読者です 読者をやめる 読者になる 読者になる

落書きノート

ふと自分が気になった事を書いてます

SQLで問題を解く

今回は結合の動作の違いについて読んでいました。概念の説明が多かったのでサンプルコードはあまり試してません。次回はOUTER JOINとNULLの使い方みたいですね。これはすぐに終わりそうですし、演習問題にやっと取り掛かれます。

SQL> select cust_name
  2  from customer natural join slip
  3  where slip_id = 8;

CUST_NAME
--------------------
西日本商会

SQL> select cust_name
  2  from customer join slip using (cust_id) 
  3  where slip_id = 8;

CUST_NAME
--------------------
西日本商会

SQL> select cust_name
  2  from customer join slip on (customer.cust_id = slip.cust_id)
  3  where slip_id = 8; 

CUST_NAME
--------------------
西日本商会

SQL> select cust_name
  2  from customer, slip
  3  where customer.cust_id = slip.cust_id
  4  and slip.slip_id = 8;

CUST_NAME
--------------------
西日本商会

SQL> select * from slip
  2  natural join customer;

   CUST_ID    SLIP_ID SLIP_DAT CUST_NAME        ADDRESS
---------- ---------- -------- -------------------- ----------------------------------------
         1          7 95-07-03 古千谷商店           東京都足立区古千谷本町
         2          1 95-06-19 千代田商事           東京都千代田区大手町
         2          4 95-06-26 千代田商事           東京都千代田区大手町
         2          6 95-07-03 千代田商事           東京都千代田区大手町
         3          5 95-06-29 竹の塚マート         東京都足立区竹の塚
         4          3 95-06-23 竹里屋               埼玉県春日部市竹里
         5          2 95-06-23 西日本商会           大阪府大阪市西区北堀江
         5          8 95-07-07 西日本商会           大阪府大阪市西区北堀江

8行が選択されました。

SQL> select * from slip, customer
  2  where customer.cust_id = slip.cust_id;

   SLIP_ID    CUST_ID SLIP_DAT    CUST_ID CUST_NAME        ADDRESS
---------- ---------- -------- ---------- -------------------- ----------------------------------------
         7          1 95-07-03          1 古千谷商店           東京都足立区古千谷本町
         1          2 95-06-19          2 千代田商事           東京都千代田区大手町
         4          2 95-06-26          2 千代田商事           東京都千代田区大手町
         6          2 95-07-03          2 千代田商事           東京都千代田区大手町
         5          3 95-06-29          3 竹の塚マート         東京都足立区竹の塚
         3          4 95-06-23          4 竹里屋               埼玉県春日部市竹里
         2          5 95-06-23          5 西日本商会           大阪府大阪市西区北堀江
         8          5 95-07-07          5 西日本商会           大阪府大阪市西区北堀江

8行が選択されました。

SQL> select * from slip
  2  natural join customer;

   CUST_ID    SLIP_ID SLIP_DAT CUST_NAME        ADDRESS
---------- ---------- -------- -------------------- ----------------------------------------
         1          7 95-07-03 古千谷商店           東京都足立区古千谷本町
         2          1 95-06-19 千代田商事           東京都千代田区大手町
         2          4 95-06-26 千代田商事           東京都千代田区大手町
         2          6 95-07-03 千代田商事           東京都千代田区大手町
         3          5 95-06-29 竹の塚マート         東京都足立区竹の塚
         4          3 95-06-23 竹里屋               埼玉県春日部市竹里
         5          2 95-06-23 西日本商会           大阪府大阪市西区北堀江
         5          8 95-07-07 西日本商会           大阪府大阪市西区北堀江

8行が選択されました。

SQL> select * from slip, customer
  2  where customer.cust_id = slip.cust_id;

   SLIP_ID    CUST_ID SLIP_DAT    CUST_ID CUST_NAME        ADDRESS
---------- ---------- -------- ---------- -------------------- ----------------------------------------
         7          1 95-07-03          1 古千谷商店           東京都足立区古千谷本町
         1          2 95-06-19          2 千代田商事           東京都千代田区大手町
         4          2 95-06-26          2 千代田商事           東京都千代田区大手町
         6          2 95-07-03          2 千代田商事           東京都千代田区大手町
         5          3 95-06-29          3 竹の塚マート         東京都足立区竹の塚
         3          4 95-06-23          4 竹里屋               埼玉県春日部市竹里
         2          5 95-06-23          5 西日本商会           大阪府大阪市西区北堀江
         8          5 95-07-07          5 西日本商会           大阪府大阪市西区北堀江

8行が選択されました。

SQL> select cust_id from slip
  2  natural join customer;

   CUST_ID
----------
     2
     5
     4
     2
     3
     2
     1
     5

8行が選択されました。

SQL> select cust_id from slip, customer
  2  where customer.cust_id = slip.cust_id;
select cust_id from slip, customer
       *
行1でエラーが発生しました。:
ORA-00918: 列の定義が未確定です。


SQL> select customer.cust_id from slip, customer
  2  where customer.cust_id = slip.cust_id;

   CUST_ID
----------
     2
     5
     4
     2
     3
     2
     1
     5

8行が選択されました。

SQL> select slip.cust_id from slip, customer
  2  where customer.cust_id = slip.cust_id;

   CUST_ID
----------
     2
     5
     4
     2
     3
     2
     1
     5

8行が選択されました。