MySQLで、Javaを使っています。
SQL文が組めなくて困っています。
抽出したいのは、下記の2つのテーブルの項目を横にJOINし、
両方のテーブルの全項目を取得するのですが、
条件として、
両方のテーブルの持っている update_time(datetime型)の大きい順に抽出したいのです。
どのようなSQL文を組めばよろしいでしょうか?
注意点としましては、
bookテーブルは必ず優先して存在するレコードを抽出したいのですが、
interview_bookは、画面で、bookテーブル情報を登録するときに、
10回に1回くらいしか登録しないので、レコード数が違います。
従って、JOINしても、bookテーブル側にはレコードがあるが、
interview_book側には、レコードがない状態が、
ほとんどです。10分の1くらい。
■追記 8/23 08:53
その場合は、interview_book.company_id = null とかですと、
この後の、データ処理で、interview_book側には、レコードが無いんだ!!と
わかりやすいので、そのような配慮もいただけるとうれしいです。
String strSQL =
"SELECT * FROM book"
- " WHERE"
- " (book_id = " + iPara_book_id + ")" // 本ID
- " AND (company_id = " + iPara_company_id + ")" // 会社ID
- " AND (customer_id = " + iPara_customer_id + ")" // 顧客ID
- " AND (delete_flag = false)" // レコード削除フラグ
- " ORDER BY visit_date DESC" // 一番最近のレコード順
- " LIMIT " + 100; // 抽出レコード数を制限
String strSQL =
"SELECT * FROM interview_book"
- " WHERE"
- " (company_id = " + iPara_company_id + ")" // 会社ID
- " AND (customer_id = " + iPara_customer_id + ")" // 顧客ID
- " AND (book_od = " + iPara_book_id + ")" // 本ID
- " AND (base_id = " + iPara_base_id + ")" // 基本か特殊か?
- " AND (module_type != 0)" // モジュール種類
- " AND (delete_flag = false)"; // レコード削除フラグ
- " LIMIT " + 100; // 抽出レコード数を制限
回答3件
あなたの回答
tips
プレビュー