プロが教える店舗&オフィスのセキュリティ対策術

大学でSQLの授業があるのですが全くわかりません。
表ではなく文で説明されているのですが調べても理解できず文のどこから工程や作業時間といった単語を取ってSQL文にするのかが分かりません。
どのテーブルを使うか書いてないしまずテーブル自体ないんですけど、文から読み取るしかないんですか?
それとも文の形を覚えたほうがいいですか?

A 回答 (6件)

さすがに、授業で使う問題で、そんなのは無いと思うので


・実習で作ったデータベースを使用する前提の問題になっている
・その問題の前にそのデータベースを作る問題がある
等が考えられます。
見落してないですか?


ちなみに、実戦では、文章からデータベースを設計してテーブルを作って...、なんてのはよくあることです。
    • good
    • 0

過去の情報処理技術者試験で、提示したSQLから読み取って答えるといった設問はあったようにも思います。


ただ、それがかなり不正確なのは困りますね。
この質問、今後に質問する場合は、正確に情報提示するようにしてください。
そうすることで、より適切な回答がよろ早く得られる可能性が高くなります。
    • good
    • 1

私は国内RDBMSの開発を長年やり、ユーザの情報処理部門の人や開発を担当するソフトウェア会社のSE、PGなどに講習会を開いて教える立場でした。


部署内の新人教育で、プログラミング演習課題を作り、教える立場でした。
「教える人に教える」立場でした。
SQLの演習では、次の項目が提示されるのが基本です。
(1)表の列構成
(2)表と表の関係→どの列で紐づけするのか
(3)表の格納データ
(4)得たい結果

「SQLを提示するので、そこから読み取れ」というのは、実際にどういう表定義で制約などが定義されているのか分からず、色々な正解と扱うべきか判断が難しくなる解答が出てくる可能性があります。
この設問を出した人は、専門家であった私から見れば、ど素人です。

そしてその設問を受けて、ここで質問したあなたにも多くの問題があります。
設問で提示された内容を最初から提示せず、後出ししていること。
後出しした情報が、誤字脱字などがたくさんあり、それが日本語の文章だけならともかく、SQL中にたくさんあり、他人による適切な回答を妨げていることになります。

SQLだけ提示されて、そこから分かることは次のようなものです。

SELECT 列や式の並び
FROM 表1
INNER JOIN 表2
ON 表1と表2の列での結合条件
WHERE 表1か表2、あるいは両方の列で、最終的に得たい条件→制限条件

表名.列名のように、列名が表名で修飾されている場合は、どの表の構成列か分かります。
修飾されていない場合は、分かりません。→設問の問題点

ON 製造指図書.品目=工程表.品目
WHERE 工程='組立'
AND製造指図書.番号 NOT IN(307022)

提示されたONによる結合条件は、「.」による修飾と、区切りの「,」がめちゃくちゃ。
工程=組立は、工程='組立'でないですか?
前者は列同士の比較、後者は列と文字定数の比較になり、まったく意味が異なります。

SELECT 製造指示書.番号,SUM(製造指示量) AS 標準作業時間
FROM 製造指示書
INNER JOIN 工程表
ON 製造指示書.品目=工程表.品目
WHERE 工程='組立'
AND 製造指示書.番号 NOT IN(307022)
GROUP BY 製造指示書.番号

日本語の表名、列名など長い名前、式などは別名を付けることで見やすくなります。

SELECT s.番号,SUM(製造指示量) AS 標準作業時間
FROM 製造指示書 AS s
INNER JOIN 工程表 AS k
ON s.品目=k.品目
WHERE 工程='組立'
AND s.番号 NOT IN(307022)
GROUP BY s.番号
    • good
    • 1

標準作業時間は求まっているみたいだからあとは製造指図書単位にすれば良いんですね


こうするのかな?
SELECT 製造指図書.番号
,SUM(製造指示量 * 時間) AS 標準作業時間
FROM 製造指図書
INNER JOIN 工程表 ON 製造指図書.品目=工程表.品目
WHERE 工程=組立
AND 製造指図書.番号 NOT IN(307022)
GROUP BY 製造指図書.番号

文章から読み取らせるとか鬼かとw
実行環境を用意して貰えないのでしょうか?
SQLServerなのですよね?SQLServer Management Studioというツールを使うと便利です
あと実行環境があったら試してもらいたいのが、「sp_tables」というコマンドを打ってもらうとテーブルの内容がリストアップされます
    • good
    • 0
この回答へのお礼

ありがとうございますT_T
頑張ってみます、、!

お礼日時:2022/07/20 12:13

こんばんは


表のイメージを描かないのはいかんですな、テーブルというのはExcelの表みたいなデータの集合体だと思って良いです
捕捉を見るとスケジュール管理テーブルがあって予定時間、稼働時間カラムがありーのその時間から差を求める式が必要とそんな感じですか?
SQLの指示コマンドは大抵、抽出から始まります
SQLは
SELECT 業務名 , 稼働時間 - 休憩時間
FROM スケジュール管理
みたいな感じになると思います



余談ですが昔、SYBASEというデータベースがあって、それは黒い画面で書く事が多かったです
でも今は表で出すのが主流な筈です
こんなんじゃ分からないと異議を唱えるのも有りかと…
    • good
    • 0
この回答へのお礼

SELECT 製造指図書番号,製造指図書,品目,工程,製造指示量,時間,製造指示量*時間AS標準作業時間
FROM製造指図書 INNER JOIN 工程表 ON製造指図書,品目=工程表,品目
WHERE 工程=組立
AND製造指図書番号 NOT IN(307022)

という答えが書いてあって、これに対する問題文が組立工程における製造指図書ごとの標準作業時間を求めなさいとのことでした。
なんでこのsql文になるのか訳が分からないんです、、このsql文の中にある単語はどこからきているのか、、、

お礼日時:2022/07/20 03:28

例えばどんな文章なのでしょう?


select文とかの文ですか?

ちょっと質問が分かりづらいのですがSQLなら身近なデータをテーブルにしてSQLを書いて結果を見るのが一番良いと思います。

大学なので
生徒の
氏名、学部、学科、性別、クラス、サークル、出身地、ゼミ名
などを使うと比較的分かりやすいのかな。
どちらかというとSQL自体は難しくないのですが、複数あるテーブルや必要なものだけ取り出すなど条件が入ってくると難しくなりますね。

SQLの授業ですので実際に操作して結果を見ることはできるかと思います。
頑張ってください。
    • good
    • 1
この回答へのお礼

加工工程における作業時間差異の計算と書いてあります、、、もうほんとに分からなくてテストがやばめです、、(TT)

お礼日時:2022/07/20 02:35

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