Oracle10g使用しています。
テーブルAとテーブルBを結合させてデータを取得したいと思っています。
[テーブルA]
ID name
1 A
2 B
3 C
4 D
[テーブルB]
ID SEQ VALUE
1 1 111
2 1 222
2 2 333
3 1 444
4 1 555
4 2 666
4 3 777
テーブルAのキーは[ID]、テーブルBのキーは[ID,SEQ]です。
この二つを連結して以下のように出力したいと思っています。
ID SEQ NAME VALUE
1 1 A 111
2 2 B 333
3 1 C 444
4 3 D 777
テーブルBのデータは同じIDのうち最大のSEQのものを取得したいのですが
よいSQLが思いつきません。
よい方法があればご教授ください。
よろしくお願いいたします。
No.6ベストアンサー
- 回答日時:
訂正。
select ID, C.SEQ, NAME, C.VALUE
from テーブルA,
(
select A.ID, A.SEQ, A.VALUE
from テーブルB A,
(
select max(SEQ) as SEQ, ID
from テーブルB
group by ID
order by ID <-- これ要りません。(あっても動きますが)
) B
where
A.ID = B.ID and
A.SEQ = B.SEQ
) C
where
ID = C.ID
order by ID
No.5
- 回答日時:
動作するの確認しました。
見やすいように行の先頭には全角スペースが入っていますので
取り除いてください。
select ID, C.SEQ, NAME, C.VALUE
from テーブルA,
(
select A.ID, A.SEQ, A.VALUE
from テーブルB A,
(
select max(SEQ) as SEQ, ID
from テーブルB
group by ID
order by ID
) B
where
A.ID = B.ID and
A.SEQ = B.SEQ
) C
where
ID = C.ID
order by ID
;
No.4
- 回答日時:
いろいろ解決法はあると思いますよ。
・分析関数を使ってみる。
select b.id,b.seq,a.name,b.value
from
(select a.*,row_number() over(partition by id order by seq desc) R from a) a,
b
where a.id=b.id and R=1;
・抽出条件でがんばってみる。
select b.id,b.seq.a.name,b.value
from a,b
where a.id=b.id and (a.id,a.seq) in (select id,max(seq) from a);
・結合でがんばってみる。
select b.id,b.seq.a.name,b.value
from a,b,
(select id,max(seq) max_seq from a group by id) x
where a.id=b.id and a.id=x.id and a.seq=x.max_seq;
参考までに、3つともテストしてません。(目視検査のみ)
No.3
- 回答日時:
な、何度も申し訳ありません。
From句がぬけていますね。
自分で見ててもアホらしいことですが、
なんでここは、自分の投稿した回答を修正したり削除したりできないんですかね。。。
以後注意します。。。。
No.2
- 回答日時:
あ、いきなり間違えてました。
申し訳ない。。。maxをかけるのはSEQですよね・・・
正しくは
select b.id max(b.seq) a.name b.value where a.id = b.id order by b.id group by b.id
でした。
No.1
- 回答日時:
最近SQL打ってないので微妙ですが、以下のSQL文でいけませんか?
select max(b.id) b.seq a.name b.value where a.id = b.id order by b.id group by b.id
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- MySQL 【MySQL】本当に困っています。詳しい方、ご教授よろしくお願いします。 1 2023/06/03 14:18
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- Oracle SQL update方法 2 2022/06/22 14:07
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
SET句内で複数の条件を指定して...
-
マテビューのNOTNULL設定について
-
写真のsql文空白をハイフン表示...
-
再起SQL が無限ループします。
-
unionでマージした副問合せを結合
-
Accessで別テーブルの値をフォ...
-
エクスプローラーで「2つの条件...
-
Oracleでの文字列連結サイズの上限
-
Accessのクエリでフィールドの...
-
DataGridViewの内容をDBに反映...
-
access 自動採番 年が変わる...
-
Accessでのレコード存在チェック
-
[VBA] ADOの Clone と AddNew
-
Excelの横軸の際の抽出について
-
ACCESS VBA レコードセットの参...
-
日本語の表名、列名の利用について
-
ADO VBA 実行時エラー3021
-
JSPのNULLレコード表示について...
-
困っています。ORACLE_SQL 複数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select句副問い合わせ 値の個...
-
select insertで複数テーブルか...
-
SELECTの結果で同一行を複数回...
-
MERGE文を単体テーブルに対して...
-
固定値を含む結合と複数テーブ...
-
複数テーブルのMAX値の行データ...
-
他のテーブルを参照した値はupd...
-
unionの結果は集計はできないで...
-
外部結合とor条件混在の記述方法
-
oracleの分割delete
-
SET句内で複数の条件を指定して...
-
SQL GROUPで件数の一番多いレコ...
-
DELETE 文とEXISTSの使い方につ...
-
COUNTの取得方法(?)について...
-
集計後の数値が倍になる
-
SQLの書き方(チェックボックス)
-
unionでマージした副問合せを結合
-
副問い合わせのinsert文
-
結合と副問い合わせの違い
おすすめ情報