公式アカウントからの投稿が始まります

RDBに関する質問です。
(MySQLを想定してますが、ほかのRDBでも同じだと思います。)

Tableが4つあり、
TableAにはId、Nameの2カラム。
(IDが主キー)

TableBにはId, Id_A, Name, DateTimeの4カラム。
(IDが主キー、Id_Aは外部キーでTableAを参照)

TableCにはId, Nameの2カラム。
(IDが主キー)

TableDにはId, Id_B, Id_C, Name2のカラム。
(Idが主キー、Id_Bは外部キーでTableBを参照。Id_Cは外部キーでTableCを参照。
Id_B、Id_Cは二つ合わせてユニークキーにしています。)


これらのテーブルに画像通りのレコードが入っているとします。

このデータの中から、以下の条件を満たすレコードをとりたいと思っています。

・ 取りたいレコードはTableDのものです。
・ TableDのレコードのうち、TableAのId=1のみ。
・ TableDのレコードのうち、TableBで一番新しいレコードのみ。

つまり、画像の緑の部分のレコードとりたいです。

どのようなSQL文を書けば取得できるでしょうか?

「SQL文についての質問です」の質問画像

A 回答 (1件)

SELECT TableD.*


FROM TableD INNER JOIN TableB ON TableD.Id_B = TableB.Id
WHERE TableB.Id_A = 1 AND TableB.DateTime =
(SELECT MAX(DateTime) FROM TableB AS B
WHERE B.Id_A = TableB.Id_A)
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
私の方で図にミスがあったのでそこを修正して再度質問させていただきます。

お礼日時:2022/02/27 09:55

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