![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
SQLで取得可能でしょうか
今2つのテーブルがあるとします。
----------------------
テーブル1
KEY 項目
1 テスト1
2 テスト2
3 テスト3
-----------------------
----------------------
テーブル2
CD 名称
1 か
1 き
2 さ
2 し
2 す
3 た
-----------------------
テーブル1のKEYはキーで重複しません。
テーブル2のCDは重複しますが、内容はテーブル1のKEYとリンクします。
今、テーブル1のKEY1件につき、データを1件取得したいのですが、
テーブル2の名称も取得したいです。
データは1件しか取得しない為、名称は、特定文字(例として/)で
区切って取得したいです。
期待したい結果
----------------------
KEY 名称
1 か/き
2 さ/し/す
3 た
----------------------
このような取得は可能でしょうか?
尚、SQLの発行は1回のみで行いたいです。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
oracleのバージョンが書いていないので使えるか分かりませんが。
階層問合せを無理やり使ってみました。
with t1 as (
select 1 key,'テスト1' 項目 from dual
union all select 2,'テスト2' from dual
union all select 3,'テスト3' from dual
)
,t2 as (
select 1 CD, 'か' 名称 from dual
union all select 1,'き' from dual
union all select 2,'さ' from dual
union all select 2,'し' from dual
union all select 2,'す' from dual
union all select 3,'た' from dual
)
select
t1.key, t2.名称
from
t1
inner join
(select
cd, substr(名称,2) 名称, lev,
--最下層を取得するためのCD毎の最大のLEVEL
max(lev) over(partition by CD) max_level
from
(select
cd, sys_connect_by_path(名称,'/') 名称, level lev
from
(select
t2.*,
--階層問合せをするためにコード毎に順序付け
row_number() over(partition by CD order by 名称) recnum from t2)
start with recnum = 1
connect by prior cd = cd
and prior recnum = recnum - 1)) t2
on t1.key = t2.cd
and t2.lev = t2.max_level;
oracle10.2.0.1.0では期待結果が取得できました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Oracle SQLの書き方について 1 2023/04/13 09:54
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
SET句内で複数の条件を指定して...
-
SELECTの結果で同一行を複数回...
-
select句副問い合わせ 値の個...
-
写真のsql文空白をハイフン表示...
-
SQL GROUPで件数の一番多いレコ...
-
集計後の数値が倍になる
-
固定値を含む結合と複数テーブ...
-
select insertで複数テーブルか...
-
他のテーブルを参照した値はupd...
-
oracleの分割delete
-
updateの一括実行
-
SQLの書き方(チェックボックス)
-
データセットのレコード更新が...
-
Oracleでの文字列連結サイズの上限
-
SELECTで1件のみ取得するには?
-
GROUP BYを使ったSELECT文の総...
-
Accessで別テーブルの値をフォ...
-
実績累計の求め方と意味を教え...
-
ファイル書込みで一行もしくは...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select insertで複数テーブルか...
-
select句副問い合わせ 値の個...
-
SELECTの結果で同一行を複数回...
-
固定値を含む結合と複数テーブ...
-
MERGE文を単体テーブルに対して...
-
unionの結果は集計はできないで...
-
oracleの分割delete
-
SET句内で複数の条件を指定して...
-
複数テーブルのMAX値の行データ...
-
SQL GROUPで件数の一番多いレコ...
-
他のテーブルを参照した値はupd...
-
外部結合とor条件混在の記述方法
-
unionでマージした副問合せを結合
-
COUNTの取得方法(?)について...
-
集計後の数値が倍になる
-
SQLの書き方(チェックボックス)
-
副問い合わせのinsert文
-
OracleのSQLについて質問があり...
-
updateの一括実行
おすすめ情報