「SQLで、2つのテーブルを横に連結し、日付とidの大きい順に抽出したい。」
MySQLをJAVAで書いています。
下記のように2つの内容が違うが結合キーを持ったテーブルがあります。
「■6.テーブル抽出後のイメージ」のように、抽出するにはどのようなSQL文を
書けばよいでしょうか?
※前回、自作のSQL文を書いて、同じような質問をしようとしたのですが、
間違ったSQL文を提示することで、逆に混乱を回答者様へ与えてしまったので、
今回は、あえて文字で、条件等を書いてみました。
■1.2つの構造の違うテーブルがあります。
テーブルA
テーブルB
■2.共通キーは、2つ。
com_id // 会社ID
cus_id // 顧客ID
■3.最大抽出数は、相互に100件。
■4.抽出優先度は、各テーブルのdatetimeの大きい順、次に、idの大きい順。
■5.テーブルAとテーブルB共、テーブル内の全項目を抽出します。
■6.テーブル抽出後のイメージ
テーブルA テーブルB
id com_id cus_id name datetime ... id com_id cus_id address datetime ...
6 1 1 鈴木1 2015-08-01 11:.. 14 1 1 東京1 2015-08-01 11:..
13 2 1 東京2 2015-07-21 22:..
7 1 1 鈴木1 2015-07-15 18:.. 9 1 1 東京1 2015-07-15 18:..
5 5 1 鈴木4 2015-07-12 11:..
4 8 1 鈴木5 2015-07-01 23:.. 10 8 1 東京8 2015-07-01 23:..
3 67 2 鈴木5 2015-06-21 10:.. 11 67 2 東京67 2015-06-21 10:..
12 1 33 東京1 2015-06-18 11:..
2 1 1 鈴木1 2015-06-13 11:.. 8 1 1 東京1 2015-06-13 11:..
1 4 4 鈴木4 2015-06-05 12:..
#sqlとは関係ないですが、
等幅フォントの指定方法がわからなかったので、ブラウザによっては、
表がキレイに揃ってないこがあります。
■7.上記の様に片方にしかレコードがない場合、
0 や null で、レコードが無い方を埋める。
■8.両方に共通であるが、テーブルでの連携と関係ない項目に、
delete_flag = true/false があるので、trueのレコードのみ抽出対象。
以上です。
難しいでしょうか?
回答3件
あなたの回答
tips
プレビュー