SQL質疑応答スレ 9問目

このエントリーをはてなブックマークに追加
434NAME IS NULL
■DBMS名とバージョン
Oracle10g

■テーブルデータ
○荷物テーブル
id 中身id 荷受け
1 1 2009/12/11
2 1 2009/12/21
3 2 2010/12/25
○中身テーブル
id 品物 重さ
1 本 500
2 テレビ 1000
○作業テーブル
荷物id 作業項目id 作業者名 作業状況
1 1 佐藤 完了
1 3 志村 作業中
2 1 鈴木 完了
2 2 鈴木 未
2 3 田中 未
3 1 佐藤 完了
3 3 田中 未
○作業項目テーブル
id 作業内容
1 品物を入れる
2 領収書を入れる
3 封をして発送する

■欲しい結果
荷物id 品物 重さ 作業者名※1 作業内容※1 作業状況 対応班※2
2 本 500 鈴木 領収書を入れる 未 2
3 テレビ 1000 田中 領収書を入れる 未 1
※1 作業状況が完了以外かつ作業項目idが一番小さいもの
※2 重さが1000以上→作業班1、作業者名が鈴木かつ作業状況が未→作業班2、作業状況にかかわらず、作業者名に田中がある荷物→作業班3
   (班1 > 班2 > 班3の順で優先し、荷物idを重複させない)

■説明
荷受けが2009/12/31以前の荷物かつ対応班が存在するものを抽出したいです。
荷物は沢山ありますのでパフォーマンスもできれば考慮したいです。
「パッとわからないけどちょっと考えればわかるだろJK」→「2時間考えてもできないorz」(今ここ)