重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

いつもお世話になってます。独学で情報処理勉強しています。
【専門用語をなるべく使わずに】答えていただける方お願いします。

表が「社員表」と「社員有資格表」の二つしかなくて、
社員表    |社員番号|社員名|所属|
社員有資格表 |社員番号|資格名|登録日|
「資格を複数持つ社員を抽出するSQL」で
SELECT DISTINCT 社員番号 FROM 社員有資格表 B1
WHERE EXSISTS (SELECT * FROM 社員有資格表 B2
WHERE B1.社員番号=B2.社員番号 AND B1.資格名<>B2資格名)
のB1とかB2はなんですか。

A 回答 (3件)

No.1の方が言われるようにB1、B2はニックネームです。


しかし、ここでは1つの表にB1、B2の2つのニックネームをつけています。
こうすることによって同じ表同士の比較ができます。

同じ2つの表同士で社員番号が同じで資格名がちがうものが存在するかどうかをテストしています。
それがEXISTS(存在する)です。

因みに該当者は社員番号が複数出てしまいますのでこれを一つにまとめるのがDISTINCTです。
また、この問題では社員表は使う必要はありません。(ひっかけ問題?)

この回答への補足

ありがとうございます。意味が分かりました。
それから一緒に聞けばよかったのですが、もうひとつだけ教えていただきたいのですが、B1.資格名<>B2資格名がなぜ資格名が違うものになるのでしょうか。よろしくお願いします。

補足日時:2007/07/09 14:08
    • good
    • 0

No,2です。



> B1.資格名<>B2資格名がなぜ資格名が違うものになるのでしょうか。

A≠B を A<>B と書く約束です。
    • good
    • 0
この回答へのお礼

重ね重ねありがとうございます。
基本情報技術者の参考書3冊、午前午後問題集各1冊には載ってなかったので聞いてしまいました。自分で調べられる範囲だったみたいですね。どうもありがとうございました。

お礼日時:2007/07/09 17:11

表名である「社員表」と「社員有資格表」を何度もSQLの中で記載するのが面倒なので、このSQLの中では


「FROM 社員有資格表 B1」
の部分で社員有資格表をB1とニックネームをつけて、次に社員有資格表と書く代わりにB1と書けばすむもののはずなんですが、どうもおかしいですね。

B1とB2どちらとも社員有資格表になってます。
どちらかが社員表だと思うんですが。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!