平成24年春期 午後問3

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
サラダバーさん
(No.1)
https://www.fe-siken.com/kakomon/24_haru/pm03.html
こちらの設問2について質問です。
私はGROUP BY句で社員毎にまとめていないから選択肢として除外されるのだと理解していたのですが、ネットで調べてみると明細表.料理コード=料理表.料理コードとなっていないから除外するという解説があります。
なぜ=(ではだめなのでしょうか?
2020.10.19 12:47
メタルさん
(No.2)
神戸電子専門学校ブログより引用

設問2
FROM句に複数の表が列挙されている時、WHERE句で結合条件を書く必要があります。設問2のSQL文では、「FROM 料理表,精算表,明細表」と3つのテーブルが列挙されているので、少なくともそれらを結合する条件を空欄に入れる必要があります。
明細表は、「精算コードが等しい」という条件で精算表を参照します。
明細表は、「料理コードが等しい」という条件で料理表を参照します。
この2つの結合条件から
精算表.精算コード=明細表.精算コード AND 明細表.料理コード=料理表.料理コード
が必要です。この時点でア)は間違いであることがわかります。

引用終わり。
つまり=(だと別の表を新たに作って比較しているということでしょうね。
2020.10.20 16:11
メタルさん
(No.3)
時間があればウェブ上でSQLできるところもあるのでそこで似たような条件でSQL実行して試してみるのも良いかもしれません。
私も時間あれば試してみます。
しばらくレスがない場合、時間なかったと考えてくださいね。
2020.10.20 16:14
メタルさん
(No.4)
sql.main.jp なるサイトで以下のコードを実行したら、普通に見れますね。

SELECT EMPNO,ENAME
FROM EMP,DEPT
WHERE EMP.DEPTNO =(SELECT DEPT.DEPTNO FROM DEPT WHERE LOC = 'NEW YORK')

環境によって違うのかスレ主様の見たサイトの解説が勘違いで書かれているのかのどっちかでしょうね。
どちらにせよグループバイしないと実行できないのは間違いありません。
2020.10.23 23:15
サラダバーさん
(No.5)
なぜできないのか頭で考えても全くわからず、ずっとモヤモヤしていました。
解決しました。
そのサイトも知らなかったので、ブックマークしておきます。
わざわざありがとうございました。
2020.10.24 10:22
メタルさん
(No.6)
どういたしまして。
2020.10.24 17:17

返信投稿用フォーム

スパム防止のために初投稿日から10日以上経過したスレッドへの書き込みは禁止しています。

その他のスレッド


Pagetop