質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

Q&A

解決済

1回答

435閲覧

縦持ちテーブルで、特定の値でフィルタリングして、その値を含む同じIDの全データを取得したい

退会済みユーザー

退会済みユーザー

総合スコア0

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

0グッド

1クリップ

投稿2020/08/05 07:12

編集2020/08/05 07:35

前提・実現したいこと

MyBatisを使いデータの取得をしたいのですが、表題のとおり
縦持ちになっているテーブルを特定の値でフィルタリングし、
フィルタされた値を含む同じ予約IDの全データを取得したいです。

具体的には以下のようなことです。

下記のような作業テーブルがあったとして

予約ID項目ID項目名項目値
110承認者山田太郎
120作業内容作業A
130作業完了日2020/08/05
210承認者佐藤花子
220作業内容作業A
310承認者山田太郎
320作業内容作業B
330作業完了日2020/07/30

画面から承認者が「山田太郎」で選択されたときに

予約ID項目ID項目名項目値
110承認者山田太郎
120作業内容作業A
130作業完了日2020/08/05
310承認者山田太郎
320作業内容作業B
330作業完了日2020/07/30

という結果を得たいです。

よろしくお願いいたします。

どこでつまずいたか

WHERE句に何をどう指定すればよいか。

単純に

WHERE 項目ID = 10 AND 項目値 = '山田太郎'

とすると

予約ID項目ID項目名項目値
110承認者山田太郎
310承認者山田太郎

しか取れないですよね。
同じ予約IDの他のデータも全て取得したいです。

試したこと

SELECT 予約ID, 項目ID, 項目名, 項目値 FROM  作業テーブル WHERE ここからがわからない

利用環境

Mybatis 3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

SQLの問題ですね。

sql

1SELECT * FROM 作業テーブル WHERE 予約ID IN ( 2 SELECT 3 予約ID 4 FROM 5 作業テーブル 6 WHERE 7 項目名 = '承認者' 8 AND 項目値 = '山田太郎' 9)

投稿2020/08/07 08:19

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/08/14 11:22

お返事たいへん遅くなってしまい申し訳ございません。 where句内で、IDについて副問い合わせをすればよかったのですね。 試してみたところ目的の結果を得ることができました。 ご対応いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問