- PR -

SQL文の書き方について

1
投稿者投稿内容
良太
会議室デビュー日: 2004/04/09
投稿数: 14
投稿日時: 2005-07-03 21:18
学生一覧
学生ID 学生NAME
1001 一郎
1002 二郎
1003 三郎
1004 四郎
1005 五郎
1006 六郎
1007 七郎

クラブ参加状況
学生ID クラブID クラブNAME
1001 11 サッカー部
1002 12 野球部
1004 12 野球部

ここからまだクラブに参加していない学生の一覧を取得したいです。
どのように取得できるのでしょうか?
下記方法を考えましたけど、もっといい方法あるのでしょうか?
SELECT A.学生ID, A.学生NAME
FROM 学生一覧 A
MINUS
SELECT A.学生ID, A.学生NAME
FROM 学生一覧 A, クラブ参加状況 B
WHERE A.学生ID = B.学生ID
良太
会議室デビュー日: 2004/04/09
投稿数: 14
投稿日時: 2005-07-03 21:34
はじめまして、良太です。
現在ORACLE9iを使用していますが、上記のようなSQL文を書くことになりましたが、どのように書けばいいか分からなくて、聞いています。よろしくお願いします。
Marimo
会議室デビュー日: 2003/10/15
投稿数: 15
お住まい・勤務地: 東京都
投稿日時: 2005-07-03 23:39
こんばんは。
Marimoと申します。

NOT EXSITSを利用するのはいかがでしょうか。
または、外部結合させてクラブ参加状況情報がNULLになるものを取得してもよいでしょうか。
いーた
大ベテラン
会議室デビュー日: 2004/07/12
投稿数: 154
お住まい・勤務地: 東京
投稿日時: 2005-07-04 10:16
NOT IN句を使うパターンです。

SELECT 学生ID, 学生NAME FROM 学生一覧
WHERE 学生ID NOT IN
(
SELECT 学生ID FROM クラブ参加状況
)

他の方法もありますので、色々と試してみてはどうでしょうか。
トレースを取得すればOracleのコストもわかりますので、効率の良いSQLもわかると思います。
1

スキルアップ/キャリアアップ(JOB@IT)