![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
・データベース Oracle10g
・プログラム java 1.6
お世話になっております。業務でOracleを利用して以下のデータをしたいと考えています。
★やりたいこと
・検索画面から、状態を指定し、次画面の検索結果画面で結果を表示したい。
・検索条件は、状態のみ(本当はいろいろあるけどここでは割愛)
・ログイン時のユーザー情報を保持しており、画面で指定された'状態’と'ユーザー'をキーにデータを取得する
・係長、一般職、派遣のユーザーは "状態"が"本社承認済み"以降のデータしか見られない
・ただし、自分が登録・申請・承認に関わるデータは"本社承認済み"以前の状態のものも見られる
・上記の結果を一回のSQLで取得したい
■テーブル:予定情報
---------------------------------------------
登録内容 | 登録者 | 申請者 | 承認者 | 状態・・・・
---------------------------------------------
AAAAAAAA |派遣 | 課長 | 部長 | 登録済み
BBBBBBBB |一般職 | 係長 | 申請済み
CCCCCCCC |派遣 | 一般職 | 課長 | 本社承認済み
DDDDDDDD |課長 | 課長 | 部長 | 連携済み
EEEEEEEE |派遣 | 派遣 | 係長 | 反映済み
※ユーザーが一般職の場合、登録内容AAAAAAAA以外のデータを取得する
派遣の場合は、登録内容BBBBBBBB以外のデータを取得する
係長の場合は、登録内容AAAAAAAA以外のデータを取得する
■ユーザー(登録者、申請者、承認者のデータ)
以下のユーザーが存在しています。
・社長
・部長
・課長
・係長
・一般職
・派遣
■画面から指定可能な状態は以下の通り
・すべて
・登録済み
・申請済み
・本社承認済み
・連携済み
・反映済み
★わからないこと
検索画面で状態'すべて'が選択された場合に、
係長、一般職、派遣のユーザーについて状態"が"本社承認済み"以降のデータはすべて表示し、
自分が登録・申請・承認に関わるデータは"本社承認済み"以前の状態のものを取得するというSQL
の条件指定をおこない際の構文がわからない。
状態が'登録済み'かつ、ユーザーが'派遣'の場合のSQLは以下ですが、
状態で'すべて'が選択された場合は、どのような構文になるのでしょうか?
Selct * from 予定情報 where 状態 ='登録済み'
and 登録者 = '派遣' and 申請者 = '派遣' and 承認者 ='派遣'
なにとぞよろしくお願いいたします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こういった場合、以下のようなマスタ類を整備します。
■状態マスタ
状態コード、状態
・10:登録済み
・20:申請済み
・30:本社承認済み
・40:連携済み
・50:反映済み
"本社承認済み"以前は、「where 状態コード > 30」で表現可能です。
※というか、以前以後を表現するためには「本社承認済み」という文字列では表現できません。
また、ユーザに対しては参照可能な「状態コード」を付与します。
こうすることで、ユーザが参照可能な状態を定義します。
■ユーザマスタ
ユーザID、参照可能状態コード、ユーザ名
・01 10 社長
・02 10 部長
・03 10 課長
・04 40 係長
・05 40 一般職
・06 40 派遣
こうしておけば以下条件で各ユーザが参照可能な状態を指定できます。
ユーザ毎に個別指定も可能です。
「where 状態コード >= 参照可能状態コード」
一般職は40からしか見られなくなりますし、課長は10から見られます。
■状態マスタ
・99 すべて
・10 登録済み
・20 申請済み
・30 本社承認済み
・40 連携済み
・50 反映済み
(1) 検索条件取得
「一般職」が状態「登録済み」を指定。
・ユーザID(05)と参照可能状態コード(40)を取得
・指定された状態(10)を取得
(2)SQLの組み立て
(1)で取得した条件を以下に当てはめていきます。
カッコで条件の優先順位を定義します。
条件は(a)、(b)、(c)に分けます。
(a) 自己データの検索部分
(b)ユーザ権限による検索部分
(c)指定された状態を権限に付与する。
優先順位は以下にします。
ただし、(c)の条件は99の場合は指定しません。
( (a) or (b) ) and (c)
以下のようなSQLとなります。
--(a) 自己データの検索部分
-- 登録者、申請者 、承認者が自分 の場合は、状態を検索条件にしない。
where
(
(
(登録者コード = 05 or 申請者コード = 05 or 承認者コード = 05 )
)
-- (b)ユーザ権限による検索部分
-- 参照可能な状態を指定する。
or ( where 状態コード >= 40)
)
-- (c)指定された状態を権限に付与する。
-- ※99の場合は条件指定を省略
and 状態コード = 10
--
これくらいのテーブル構成でないと、実現はできないと思います。
じゃないと、java内部で条件指定を直書きすることになります。
あと、これだと(and条件)、登録も申請も承認も「派遣」の人が全部やったデータしかみられませんよ?
>Select * from 予定情報 where 状態 ='登録済み'
>and 登録者 = '派遣' and 申請者 = '派遣' and 承認者 ='派遣'
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- 退職・失業・リストラ これでは自己都合退職扱いになりませんか? 9 2023/04/12 20:57
- 派遣社員・契約社員 ある派遣会社に登録、応募し結果待ちの状態です。 先ほど別の派遣会社のサイトを見てみると、私が応募した 2 2022/05/13 05:06
- 雇用保険 離職票について A社という派遣会社に勤めていました。雇用保険加入期間は2年6ヶ月間 A社が派遣先から 3 2022/10/15 14:56
- 法学 根抵当権分割譲渡登記 債権の範囲について 1 2023/02/06 10:59
- 面接・履歴書・職務経歴書 職歴詐称しました。今後の影響について教えてください。 4 2023/08/08 21:17
- 雇用保険 雇用保険に関して質問です。 派遣社員として2年ほど就業したのち、正社員として別の会社に就職しました。 2 2022/04/12 20:37
- 中途・キャリア 6月30日に就職内定の電話が午前中に登録していたキャリアエージェント経由できました。そこから入社日や 3 2022/07/04 23:10
- その他(ビジネス・キャリア) 履歴書で請負先を記載して良いかの線引きと書き方 2 2023/07/20 11:22
- 派遣社員・契約社員 派遣でA支店に登録しました。その派遣会社の求人サイトで募集していて応募したら、B支店担当のだから、個 2 2022/07/07 11:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MS-Accessのエクスポートで異常...
-
Sqliteで使えない文字。
-
データベース
-
SQL文で、重複データの上書きは...
-
1回目の実行に3分、2回目の実行...
-
ACCESSのデータをWebブラウザで...
-
【DB】同じトランザクション内...
-
エクセルのフィルタ抽出が固まる
-
DATファイルをEXCELで開きたい
-
accessの処理が遅い
-
復旧中のデータベースについて
-
警察はスマホに保存した動画や...
-
PCが悪くなって新しいPCにSSMS...
-
ファイルを誤ってPDFに変換...
-
SQLServerバックアップ戻せない
-
復元時間:復元しています
-
SQLServer2005メンテナンスプラ...
-
SQL SERVER2008の質問です
-
作成したDBを使いたい
-
データベースが大きすぎてリス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSのデータをWebブラウザで...
-
MS-Accessのエクスポートで異常...
-
1回目の実行に3分、2回目の実行...
-
ACCESS2010 Excelエクスポート ...
-
accessの上限容量2Gでは容量が...
-
業務用のデータベースサーバー...
-
ACCESSのクエリからORACLEのDB...
-
ツリー情報のデータをSQLで取得...
-
会社の諸事情により全システム...
-
Sqliteで使えない文字。
-
SQL文で、重複データの上書きは...
-
oracleデータベースの更新履歴
-
SQLServerのDBのうちテーブルを...
-
別サーバーへのデータの同期更...
-
SQLSERVERのテーブルにデータを...
-
PL/SQLで複数のFor文を解除したい
-
暗号化したDBのデータ移行
-
データベース
-
検索システムでDBを使用しない...
-
ACOSのRDBについて教え...
おすすめ情報