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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

1724閲覧

MySQLで、特定レコードの抽出SQL文がわかりません

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2015/10/27 23:51

CentOS上で、JAVAで、MySQLを使っています。

SQL文を何度も組みなおして試行錯誤しているのですが、全く、思うように抽出できません。

下記のデータを抽出するSQL文を教えてください。

1.TABLE_Aは、条件に合ったものは、すべて抽出する。
2.TABLE_Bは、JSOIN?で、TABLE_Aの付属関連レコードの場合、抽出する。
3.TABLE_A は、id1+id2+id3でユニーク。
4.TABLE_A は、id1+id2+id3のレコードが複数ある。

関数のパラメーターに、id1=1, name=山田 を指定された場合、

TABLE_A
id1 id2 id3 name address delete_flag
1 1 1 山田 住所1 0 ←抽出
1 1 2 山田 住所2 1 ← 抽出しない
1 1 3 山田 住所3 0 ←抽出
1 2 1 松本 住所4 0
1 2 2 松本 住所5 0
1 3 1 小林 住所6 0
2 1 1 北村 住所7 0
2 1 2 北村 住所8 0
3 1 1 木下 住所9 0

TABLE_B
id1 id2 id3 file delete_flag update
1 1 1 file1 0 2015-11-01 12:21:31
1 1 1 file2 0 2015-11-01 12:21:32
1 1 1 file3 0 2015-11-03 12:21:31 ←最大日時を抽出
1 1 2 file3 0 2015-11-05 12:21:31
1 1 2 file3 0 2015-11-05 12:21:35
2 1 1 file1 0
2 1 2 file1 0
3 1 1 file1 0
3 1 1 file1 0

抽出結果
TABLE_A TABLE_B
id1 id2 id3 name address update
1 1 1 山田1 住所1 2015-11-03 12:21:31
1 1 3 山田3 住所3 null

お手数ですが、SQL文のご提供を頂ければ幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんな感じですかね

SQL

1select t1.id1 2, t1.id2 3, t1.id3 4, t1.name 5, t1.address 6, ( 7 select max(update) 8 from table_b t2 9 where t1.id1 = t2.id1 10 and t1.id2 = t2.id2 11 and t1.id3 = t2.id3 12 ) as update 13from table_a t1 14where t1.id1 = 1 15and t1.name = '山田' 16and t1.delete_flag = '0'

投稿2015/10/27 23:58

trick

総合スコア366

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

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

退会済みユーザー

退会済みユーザー

2015/10/28 00:14

ご回答ありがとうござます。 お手数をお掛けしました。 早速、プログラムに組み込んでやってみます。 尚、t2.delete_flag=0は、「and t1.delete_flag = '0'」の次の行に追加してみます。
trick

2015/10/28 00:30

すみません、table_b にも delete_falg がありましたね table_bのdelete_falg はサブクエリーに組み込んでください。 ( select max(update) from table_b t2 where t1.id1 = t2.id1 and t1.id2 = t2.id2 and t1.id3 = t2.id3 and t2.delete_flag = 0 ) as update
退会済みユーザー

退会済みユーザー

2015/10/28 06:19

ありがとうございます。 ずっと詰まっていました。 たすかりました。 お手数をお掛けいたしました。
退会済みユーザー

退会済みユーザー

2015/10/28 07:27

ご報告:正常に抽出できました。 本当にありがとうございます。大変助かりました。サブクエリーがこうやって使うというのも勉強になりました。 お手数をおかけしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問