
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
棒読みちゃんが起動できないの...
-
子供向けプログラミングのスク...
-
osqleditについて
-
オラクル12C_SQLPlusで実行す...
-
sqlで質問です。 Aテーブルは店...
-
SQLの中上級者へのレベルアップ...
-
SELECTによる表の変換方法を教...
-
開発対象となるアプリケーショ...
-
質問です。 下記のテーブルとデ...
-
Oracleですがsqlで質問です。 ...
-
sqlで質問です。 Aテーブルの登...
-
sqlで質問です。 Aテーブルの情...
-
SQLの書き方について
-
SQLについて教えて下さい。 主...
-
sqlで質問です。 idを元にidに...
-
oracleで 10,20, 30, というデ...
-
索引作成について
-
googleプレイの履歴で取得とイ...
-
sql(oracle)で質問です。 テ...
-
オラクルゴールドについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select句副問い合わせ 値の個...
-
select insertで複数テーブルか...
-
外部結合とor条件混在の記述方法
-
MERGE文を単体テーブルに対して...
-
SQL GROUPで件数の一番多いレコ...
-
SELECTの結果で同一行を複数回...
-
oracleの分割delete
-
集計後の数値が倍になる
-
固定値を含む結合と複数テーブ...
-
SET句内で複数の条件を指定して...
-
unionでマージした副問合せを結合
-
COUNTの取得方法(?)について...
-
Access 2つのテーブルで数量...
-
他のテーブルを参照した値はupd...
-
SQLの書き方(チェックボックス)
-
SQLで複数の条件がある場合
-
複数テーブルのMAX値の行データ...
-
半角英数字混在データから数字...
-
結合と副問い合わせの違い
おすすめ情報