翔泳社オラクルマスター教科書Silverを使ってシルバー取得の勉強をしていますが、どうもこの本の解答に納得のいかない点が多すぎで、このあいだから立て続けに質問してしまってごめんなさい。
何しろ知識が無さ過ぎて、本があっているのか、自分がおかしいのか、判断しかねるのです。
で、今日はこの問題です。
---問題ここから---
次の結合文の中で実行時にエラーになるものをひとつ選びなさい
a.SELECT DEPT.DEPTNO,EMP.ENAME
FROM DEPT D,EMP E
WHERE DEPT.DEPTNO=EMP.DEPTNO;
b.SELECT ENAME,SAL,GRADE
FROM SALGTADE,EMP
WHERE SAL>=LOSAL AND SAL<=HISAL;
c.SELECT DEPT.DEPTNO,DMP.ENAME
FROM DEPT,EMP
WHERE DEPT.DEPTNO(+)=EMP.DEPTNO;
D.SELECT D.DEPTNO,E.ENAME
FROM DEPT D,EMP E
WHERE D.DEPTNO=E.DEPTNO;
----問題ここまで----
で、この答えが選択肢aとなっているのですが、納得できません。
解説によれば、「FROM句で二つ以上の表を指定した場合、SELECT句やWHERE句で指定する列名は、どの表の列か判断できなければいけません。」
とあります。
つまり、正解は「どの表か明示的に表示していない」選択肢b
だと思うのですが、やはり教科書があっていますか??
私の考え方はどう間違っているのか、教えていただけたら嬉しいです。
どうかよろしくお願い致します☆
No.4ベストアンサー
- 回答日時:
まず、とっくにお分かりかも知れませんが、「FROM句で二つ以上の表を指定した場合、SELECT句やWHERE句で指定する列名は、どの表の列か判断できなければいけません。
」 というのは、けっして、「必ずSLECT句やWHERE句でどの表の列かを明示しないといけない」ということではありません。データベースソフトが区別できない場合(=2つの表に同名の列がある場合)に限って、明示しないといけないという意味です。
で、考えると、この問題の対象となるデータベース例が示されていませんので、ハッキリしたことは言えませんが、やはり答えは「a」でよいのではないでしょうか。
なお、同社の出版物は同社のWeb上に正誤表が載っています(若干、間違いが多いのは問題ですが、良心的な方かと)。
一応あたってみましたが、この箇所らしき、正誤は載っていませんでした(別の正誤は多数載っていますので、一度、参照された方がよいかと)。
参考URL:http://www.shoeisha.co.jp/
こんばんわ!
せっかく回答いただいたのにお礼が遅くなってしまってごめんなさい!
>まず、とっくにお分かりかも知れませんが、「FROM句で二つ以上の表を指定した場合、SELECT句やWHERE句で指定する列名は、どの表の列か判断できなければいけません。」 というのは、けっして、「必ずSLECT句やWHERE句でどの表の列かを明示しないといけない」ということではありません。
ああ~~~やっとわかりました!
いえ、とっくにお分かりではありませんでした。
教えていただいて良かったです~~!!
別に、別名をつけなくても、ふたつのテーブルで重複する列名がなければ
そのまま書いていいんですねー!
すごく良くわかりました。
こんな風に解説してくれる人がまわりにいないので・・・。
貧脳の私にもよくわかりました。
それに本の正誤表まで・・いたれりつくせりです。
これで自分の知識のなさを本のせいにすることもなくなりそうです(笑)。
感謝です。ありがとうございました!
No.5
- 回答日時:
こんにちわ。
> つまり、正解は「どの表か明示的に表示していない」選択肢b
> だと思うのですが、やはり教科書があっていますか??
nanashinogombei さんがおっしゃられている通り、
FROM 句で、DEPT D, EMP E と別名を指定しているにも関わらず
カラム名を別名で修飾していないために、a がエラーに
なります。
こう言った事は、手元に確認できる環境を用意しておいた方が
良いですょ。
雑誌の付録CD-ROM や、OTN Japan 等からトライアル版が
入手できます。
先ずは実際にSQL 文を実行してみて、バンバンエラーを出して
みて下さい。
→ そうした方が確実に力がつきます。
参考URL:http://technet.oracle.co.jp/
こんばんわ!
せっかく回答いただいたのに、お礼が遅くなってしまってごめんなさい!
>先ずは実際にSQL 文を実行してみて、バンバンエラーを出して
みて下さい。
→ そうした方が確実に力がつきます
そうですよね~~~。
実はあたし、オラクルって触ったことないんです(笑)。
たぶんオラクルをインストールしても使い方がわからないと思うので・・・
こんなあたしがオラクルの資格をとるなんて無謀ですよね~~~!
はぁ、でもがんばります。
みなさんにも色々教えていただいたし。
がんばるぞー!ありがとうございました!!
No.3
- 回答日時:
No.2 の誤字訂正です。
× おなじ趣旨なら、AのSQLより、EのSQLの方が適切に見えます。
↓
○ おなじ趣旨なら、AのSQLより、DのSQLの方が適切に見えます。
失礼しました。 m(_ _)m
No.2
- 回答日時:
> a.SELECT DEPT.DEPTNO,EMP.ENAME
> FROM DEPT D,EMP E
> WHERE DEPT.DEPTNO=EMP.DEPTNO;
もう一度見直して見たのですが、表にエイリアス(別名)を付けているのに、
カラム名をエイリアスで修飾せずに元の(本来の)テーブル名で修飾しているので、たぶんエラーになると思います。
(手元にオラクルがないので、確認できませんが)
おなじ趣旨なら、AのSQLより、EのSQLの方が適切に見えます。
選択肢BのSQLがエラーになるかどうかは、使用しているテーブルを実際に見ないと(SQL文だけでは)判断できないと思います。
そして、Cの選択肢ですが、テーブル名に誤字(「EMP」表とすべきところがDMPとなっている)がありますので、確実にエラーになります。
これも誤字なら、本当にヒドイ本ですね!
出版社に文句を言った方がよいかもしれません。
今度は回答のほうを、ありがとうございます!
どうやら教科書どおり、Aが正解のようですね。
カラム名に別名をつけているにもかかわらず、元のテーブル名で記述しているのでだめ、ということですよね。
よくわかりました。どうもありがとうございます!!
PSそれから、EMP→DMPは、私の写し間違いでした・・・
ひどいのは私のほうです・・・すみませんでした(^^;
No.1
- 回答日時:
回答ではありませんが・・・。
はっきり言って、専門書の内容の間違いなんて珍しくも何ともありません。
ご質問のケースがやっかいなのは、その書籍が正しくないとしても、それを検証する手段がないことです。
実務なら、そのSQLを実際に実行してみれば簡単にわかることですが。
確認できないことで悩んでも仕方がない(時間の無駄)と思います。
最近はCDの付録がついた書籍も多いので、勉強するならそういう本を選んだ方がよいのでは?
もしお手元にオラクルの環境があるなら、実際に確認するのが一番です。
(胸の支えがスッキリすることでしょう)
とは言っても、問題文で表(テーブル)の定義が示されていなければ、それもむずかしいかもしれませんが・・・。
どうしても納得がいかないなら、書面かメールで出版社に問い合せて見ましょう。(ただし、誠意のある回答は期待しないことです)
・・・結局、何が言いたいのかよくわからないコメントになってしまいましたが、参考になれば幸いです・・・。
こんばんわ!
せっかく回答いただいたのにお礼が遅くなってしまってごめんなさい!
そうですかあ、教科書といえども信用してはならないんですね~~~
でもオラクルなんて実際使ったこともない私にとっては教科書が唯一の情報源なんです(T^T)
ひとつだけじゃなく、いろんな参考書を見るようにして勉強します。
一冊だけでももうほとほと疲れちゃってるんですけど~~~
がんばります!!ありがとうございました☆
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 日本の全市区町村を人口密度が低 1 2023/06/18 19:51
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 第二回模試の3科目の各得点と合 1 2023/04/24 01:33
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「名前(first name) 1 2023/06/24 13:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
#1062 - '0' は索引 'PRIMARY' ...
-
アクセスでエラー このフィー...
-
『ORA-00936: 式がありません。...
-
列名に変数を使うことはできな...
-
Access 実行時エラー'3075' 対...
-
SQL エラー コードの一覧 につ...
-
BULK INSERTのエラー取得は可能...
-
オラクルでisnumeric?
-
EXP時のSELECT句
-
DocuWorksでの印刷
-
PostgreSqlで、GroupByの使い方...
-
オラクル(PL/SQL)のエラー
-
ODBCデータソースが削除できま...
-
空白はダメというエラーの表示...
-
ACCESS2000の動作とOS環境
-
SQLserver2005 nvarchar を flo...
-
Postagre SQL エラー
-
(素人の質問) SQL Server エ...
-
AccessVBA 実行時エラー'2766'...
-
FETCHエラー(オラクル)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
#1062 - '0' は索引 'PRIMARY' ...
-
列名に変数を使うことはできな...
-
「1004:アプリケーション定義...
-
空白はダメというエラーの表示...
-
アクセスでエラー このフィー...
-
SQLserver2005 nvarchar を flo...
-
SQL文長の制限
-
AccessVBA 実行時エラー'2766'...
-
BULK INSERTのエラー取得は可能...
-
オラクル(PL/SQL)のエラー
-
DocuWorksでの印刷
-
オラクルでisnumeric?
-
実行時エラー459 withステート...
-
Access2010実行時エラー-21473525
-
Transact-SQLのBULK INSERTでエ...
-
SQLCODE=-420とはどういうエラ...
-
PL/SQL ORA-06502エラーに関し...
-
MySQLでcreateが使えない MySQL...
-
『ORA-00936: 式がありません。...
-
(素人の質問) SQL Server エ...
おすすめ情報