• 締切済み

どなたか教えて下さい。

今年の秋の情報処理試験・セキュリティアドミニストレータ午前にて、 下記のような問題がでていました。SQLにはあまり詳しくなく、教本等 みてもよくわかりません。答えは”エ”らしいのですが、なぜそうなるの でしょうか?よろしくお願い致します。 ”会員”表に対するSQL文によって得られる表はどれか。 [会員] ------------------------------------------ 会員番号 会員名 生年月日  リーダ会員番号 ------------------------------------------ 001    田中 1960-03-25  002 002    鈴木 1970-02-15  002 003    佐藤 1975-05-27  002 004    福田 1960-10-25  004 005    渡辺 1945-09-01  004 ------------------------------------------ [SQL文] SELECT X.会員名  FROM 会員 X, 会員 Y WHERE X.リーダ会員番号 = Y.会員番号 AND X.生年月日 < Y.生年月日 [解答選択欄] ア 該当無し イ 佐藤 ウ 鈴木 福田 エ 田中 渡辺

みんなの回答

noname#99638
noname#99638
回答No.4

ご質問からかなり時間が経っていますが、締めきられていないので参考までに。 まずこの問題ですが、昔の第1種試験の過去問題の焼き直しですね。 平成10年春期午前 問46  平成8年春期午前 問52 と類似問題です。 (だからどうしたと言われればそれまでですが、旧一種レベルの問題が出るんだな~と思ったもので・・・。あと過去問題集などが手に入りましたら、ご覧になってみるのも良いかも知れません) で、内容の方ですが、 FROM 会員 X,会員 Y で 会員表に別の名前「X」と「Y」を付けています。 (他の方の回答にもありますが、同じ表どうしを結合するためです) WHERE X.リーダ会員番号 = Y.会員番号 ある会員のリーダ会員番号を元に、リーダの情報を検索していると考えれば良いと思います。 X.生年月日 < Y.生年月日 会員の生年月日 < リーダの生年月日 という検索をしています。 問題設定が分かりにくいな~という気もしますが、「リーダ会員」を「親会員」と読みかえれば、ねずみ講?という気もしないではないですね・・・。

  • soakun
  • ベストアンサー率66% (6/9)
回答No.3

まず、FROM句で会員表が2つ結合されていることに注意しましょう。 恐らくこの問題の肝となる部分だと思います。 同じ表を 2つ結合してみたのが下のような表になります。 # 左側が X、右側が Yの会員表です X番号 X名 X生年月日 Xリーダ Y番号 Y名 Y生年月日 Yリーダ -------------------------------------------------------------- 001 田中 1960-03-25 002   001 田中 1960-03-25 002 001 田中 1960-03-25 002   002 鈴木 1970-02-15 002 001 田中 1960-03-25 002   003 佐藤 1975-05-27 002 001 田中 1960-03-25 002   004 福田 1960-10-25 004 001 田中 1960-03-25 002   005 渡辺 1945-09-01 004 002 鈴木 1970-02-15 002   001 田中 1960-03-25 002 002 鈴木 1970-02-15 002   002 鈴木 1970-02-15 002 002 鈴木 1970-02-15 002   003 佐藤 1975-05-27 002 002 鈴木 1970-02-15 002   004 福田 1960-10-25 004 002 鈴木 1970-02-15 002   005 渡辺 1945-09-01 004 003 佐藤 1975-05-27 002   001 田中 1960-03-25 002 003 佐藤 1975-05-27 002   002 鈴木 1970-02-15 002 003 佐藤 1975-05-27 002   003 佐藤 1975-05-27 002 003 佐藤 1975-05-27 002   004 福田 1960-10-25 004 003 佐藤 1975-05-27 002   005 渡辺 1945-09-01 004 004 福田 1960-10-25 004   001 田中 1960-03-25 002 004 福田 1960-10-25 004   002 鈴木 1970-02-15 002 004 福田 1960-10-25 004   003 佐藤 1975-05-27 002 004 福田 1960-10-25 004   004 福田 1960-10-25 004 004 福田 1960-10-25 004   005 渡辺 1945-09-01 004 005 渡辺 1945-09-01 004   001 田中 1960-03-25 002 005 渡辺 1945-09-01 004   002 鈴木 1970-02-15 002 005 渡辺 1945-09-01 004   003 佐藤 1975-05-27 002 005 渡辺 1945-09-01 004   004 福田 1960-10-25 004 005 渡辺 1945-09-01 004   005 渡辺 1945-09-01 004 で、あとは WHERE句の条件で当てはまる行を適宜選択します。 001 田中 1960-03-25 002   002 鈴木 1970-02-15 002 005 渡辺 1945-09-01 004   004 福田 1960-10-25 004 の 2行が選択されます。ここで選択項目は Xの会員名なので、 答えは エの田中、渡辺、となります。

  • stork
  • ベストアンサー率34% (97/285)
回答No.2

ポイントは、最終行の X.生年月日 < Y.生年月日  は、 会員の生年月日 < リーダーの生年月日 となっています。 このSQLは、テーブルを自己結合して、会員の生年月日とリーダーの生年月日を比較してリーダーが年下の(生年月日が大きい)人を抽出しています。

  • coolguys
  • ベストアンサー率18% (351/1917)
回答No.1

SQLの基本が大体分るものとして、省略しながら書きます。 仮に田中をXとした場合に Yを鈴木とした場合に 田中のリーダー会員番号002 と 鈴木の会員番号が002 で等しいので ANDの判断処理に行ける 田中の生年月日と鈴木の生年月日を比較する。 この比較が正しければ、Xの会員名 田中が選択される。 この段階で「エ」しか残らない。 と言う事だと思います。

関連するQ&A

  • エクセル ダブりカウント ダブり合計 ダブり削除

    エクセル 会員NO 会員名  日付  買上金額  生年月日 0001  田中   5-3   100    1960-6-4 0002  田中   5-4   250    1980-1-3 0003  小渕   4-8   200    1950-5-5 0004  鈴木   5-5    10   1966-10-10 0005  鈴木   5-6    60   1966-10-10 0006  鈴木   5-7   100   1966-10-10 0007  小田   6-1   600   1966-10-10 上記のような表があり(実際には15000行)、次のようなことをしようと考えています。 (1)会員数を出したい。上記ですと、田中は同姓同名ですが 生年月日が違います。鈴木は同姓同名で生年月日も同じなので同一人物です。で、会員数は6名なのですが、15000行もあると大変です。これを関数で調べるにはどうすればわかるでしょうか? (2)上表のダブりデータの中から、日付の最新以外の合計を会員名毎に抜き出し、それら会員名毎の合計も出す。上表の場合、鈴木がダブりデータで最新が5-7なのでそれ以外の合計は70となります。これを関数でしたい。 (3)上表を同一人物の最新データ以外を抜いた表と ダブりばかりの表の2つにわけるにはどうすれいいでしょうか? 変換後表 1 会員NO 会員名  日付  買上金額  生年月日 0001  田中   5-3   100    1960-6-4 0002  田中   5-4   250    1980-1-3 0003  小渕   4-8   200    1950-5-5 0006  鈴木   5-7   100   1966-10-10 0007  小田   6-1   600   1966-10-10 変換後表 2 会員NO 会員名  日付  買上金額  生年月日 0004  鈴木   5-5    10   1966-10-10 0005  鈴木   5-6    60   1966-10-10 計   70 なんとかなりませんでしょうか?困っています。

  • エクセル97です。かなり難しい足し算教えてください

    エクセル97を使っています。これは無理かと思いますが質問させてください 50名ほどの名簿があるとします。田中、佐藤、渡辺という感じです C2から下に名前、D2から下に金額のデータがあると仮定します 実際には300ほどのデータで、毎日のように増えます 同じ名前が何度も出てきます    C   D 2 田中 3000 3 佐藤 2000 4 渡辺 1500 5 鈴木 2000 6 田中 5000 一方で次のような名前ごとの合計を求める表があります 田中 3000 佐藤 2000 渡辺 1500 鈴木 2000 ここからが難しいのです。難しいですがGooの皆さんの中には優秀な人が たくさんいるのでもしかしてできるかも知れないと思い質問させて頂きました 6行目に田中さん5000という新しいデータが入ったら 田中さんの合計が8000になって欲しいのです 自分が今やっている方法は名前でソートしてその合計を求めています 名前をソートしないで自動的にというのでしょうか田中さんの合計が8000になるような方法があれば教えて欲しいと思います ちょっと長くなりましたがよろしくお願いします  

  • SQL文で複数列の更新をしたい。

    SQL初心者です。 全レコードを対象にNULLが入ってるフィールドを半角スペースに更新したいのですが、SQL文で記述するにはどうしたらいいのでしょうか? 例えば 氏名 住所  電話番号    誕生日   血液型 田中 渋谷  03-1234-1111  NULL    A 佐藤 新宿  NULL      19450412  NULL 鈴木 池袋  03-1234-2222  19700522  B            ↓ 氏名 住所  電話番号    誕生日   血液型 田中 渋谷  03-1234-1111        A 佐藤 新宿          19450412   鈴木 池袋  03-1234-2222  19700522  B こんな感じです。 知恵をお貸しください。よろしくお願いいたします。

  • エクセルのセルに入力した名前を数値化

    どなたかご教授頂ければ幸いです。 エクセルの文字列(一覧表)に 田中 田中 鈴木 鈴木 佐藤 田中 田中 佐藤 佐藤 鈴木 佐藤 佐藤 と入力されているものを 集計表に 田中・・・4 鈴木・・・3 佐藤・・・5 とし、集計したいのですが、 名前を数値に読み替える方法がわかりません。 良い方法があればお教えください。 部下の月次訪問件数を容易に集計する方法を模索中です。 余計な入力を部下にさせたくないので、プルダウンで自身の 名前を選ぶだけで入力を完了とし、別の場所に作った 集計表に数値(件数)となって落ちていくものを作りたいと考えています。 よろしくお願いします。

  • Excel行毎に項目列数の違う表を行列変換したい

    A列に何かしらの名称、B列以降に文字列値があるとします。 鈴木|あああ|いいい|ううう| 佐藤|えええ|   |   | 田中|ううう|かかか|   | ・・・ という表を、 鈴木|あああ 鈴木|いいい 鈴木|ううう 佐藤|えええ 田中|ううう 田中|かかか ・・・ というように変換したいのですが、うまい方法ありませんか?

  • SQLのUPDATE文について

    SQL勉強中です。下記の様なデータを書き換えたいのですが、どの様なSQL文になるのでしょうか? ご教授下さいませ。 1つのテーブルに「会員NO」と「会員種別」という列がありまして、 会員氏名   会員No   会員種別 ・・・ --------------------------------- 田中一郎 1-0001 0001    ・・・ 鈴木二郎 2-0003 0001    ・・・ 会員Noの左端の数値が1なら会員種別を0001、2なら0002といった 形に振り分けたいのですが、どの様なSQL文になるのでしょうか? 自力ではなんとも上手くいきませんでした。 どうか、お助け下さいませ。

  • エクセルで2つのリストを統合するには?

    エクセルの別々のシートにある2つのリストを統合したいのですが、過去の質問などを見てもうまくいきません。具体的には 【表1】 番号 氏名 住所 A 佐藤 東京 B 高橋 神奈川 C 渡辺 埼玉 D 田中 千葉 E 小林 山梨 【表2】 番号 氏名 年齢 B 高橋 22 D 田中 45 という2つの表で、これを 番号 氏名 住所 年齢 A 佐藤 東京 B 高橋 神奈川 22 C 渡辺 埼玉 D 田中 千葉 45 E 小林 山梨 のようにまとめたいのです。 「データの統合」を使ってみましたがうまくいきませんでした。よろしくお願いします。

  • 複数のシートのセル内容をひとつにまとめたい

    複数のシートのセル内容をひとつにまとめたいと思っています。 Sheet1        Sheet2      Sheet3 1 山田 ¥100  1 山田 ¥80  3 鈴木 ¥80 2 佐藤 ¥130  2 佐藤 ¥55  4 田中 ¥150 3 鈴木 ¥110  4 田中 ¥60 こんなデータを Sheet4 1 山田 2 佐藤 3 鈴木 4 田中 とまとめたいんです。 金額は必要ないので、番号と名前だけをまとめたいんです。 どうすれば良いか、教えてください。 よろしくお願いします。

  • 【Excel】マクロを使用した重複チェックについて

    教えて下さい! 以下のような表があります。 月|日|A担当|コード|サブ|コード|B担当|コード 5  1    田中   1   佐藤   5   鈴木   3 5  2    佐藤   5   鈴木   3   田中   1 5  3    鈴木   3   田中   1   佐藤   5 5  4    佐藤   5   鈴木   3   田中   1 行ごとにかぶっている人がいると”■行の○○さんが重複しています”といったようなメッセージが表示されるようにしたいのです。 行は30行ほどあります。 一つフォームのボタンを作り、それをクリックすることにより重複チェックのマクロが流れるようにするにはどうしたらいいのでしょうか?

  • どなたか取り出し方を教えてください

    はじめまして、どなたか教えてください。たとえば Xというテーブルがあって。AとB2つのフィールドがあります A列 B列 鈴木 100 鈴木 125 鈴木 156 佐藤 354 佐藤 552 佐藤 132 田中 151 田中 99 田中 845 というテーブルから a列の中のものはdistinct 的な取り出し方をしつつ B列で最も大きな数字のa行を取り出したいのです 取り出したい結果 A列 B列 鈴木 156 佐藤 552 田中 845 とするにはどうすればよいのかさっぱりわかりません どなたか教えてくださいませ