
SQLServer 2008 です。
以下のツリーデータの場合に
A ┬C
│├D ┬H
││ ├I
││ └J
│└E
B ┬F ┬I
│ └L
└G
次のようなデータを登録しています。
┌──┬──┬──┐
│OYA │KO │Data│
├──┼──┼──┤
│A │C │"C" │
├──┼──┼──┤
│A │D │"D" │
├──┼──┼──┤
│A │E │"E" │
├──┼──┼──┤
│B │F │"F" │
├──┼──┼──┤
│B │G │"G" │
├──┼──┼──┤
│D │H │"H" │
├──┼──┼──┤
│D │I │"I" │
├──┼──┼──┤
│D │J │"J" │
├──┼──┼──┤
│F │I │"I" │
├──┼──┼──┤
│F │L │"L" │
└──┴──┴──┘
引数OYA="A"でSQLを実行した場合に
以下のような
この引数を含むそれ以下のツリーに関する
データを取得する方法を教えてください。
┌──┬──┬──┐
│OYA │KO │Data│
├──┼──┼──┤
│A │C │"C" │
├──┼──┼──┤
│A │D │"D" │
├──┼──┼──┤
│A │E │"E" │
├──┼──┼──┤
│D │H │"H" │
├──┼──┼──┤
│D │I │"I" │
├──┼──┼──┤
│D │J │"J" │
└──┴──┴──┘
No.2ベストアンサー
- 回答日時:
この回答への補足
ありがとうございます。
説明と同様に、テーブルを作成し、
同じデータを登録しました。
---------
照会1:
WITH RECURSIVE 中間表(親品番, 子品番, 所要数) AS
( SELECT PP.親品番, PP.子品番, PP.所要数 FROM 部品構成表 PP
WHERE PP.親品番='自転車'
UNION ALL
SELECT PP.親品番, PP.子品番, PP.所要数*中間表.所要数
FROM 中間部品表, 部品構成表 pp
WHERE pp.親品番=中間表.子品番
)
SELECT 親品番, 子品番, 所要数
FROM 中間表;
---------
上記を実行すると
以下のエラーが発生しました。
----------
メッセージ 102、レベル 15、状態 1、行 2
'RECURSIVE' 付近に不適切な構文があります。
----------
理由がわかりません。
教えてもらえないでしょうか?
No.3
- 回答日時:
残念ながら
>持ち合わせていないので
検証できる環境がありません。
識者のご登場をお待ちください。
この回答への補足
どうもありがとうございました。
いろいろ調べてわかりました。
どうやら、SQLServer2008では RECURSIVE を
使用することができないようです。
WITH [CTE] (親品番, 子品番, 所要数)
として使用するみたいですね。
なんとか動作するようになりました。
ありがとうございました。
No.1
- 回答日時:
SELECT * FROM Table
WHERE OYA='A'
OR OYA IN (SELECT KO FROM Table WHERE OYA='A')
この回答への補足
ありがとうございます。
説明不足でもうしわけありません。
確かに、質問と同じ結果が出ましたが、
ほしいのは
>この引数を含むそれ以下のツリーに関する
>データを取得する方法
ですので、
A ┬C
│├D ┬H ┬K
││ │ └L
││ ├I
││ └J
│└E
B ┬F ┬I
│ └L
└G
このような場合
OYA KO Data
--------------
H K K
H L L
も取得できるようにしたいのです
どうもすみませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
- SQL Server これをSQL文で出来るでしょうか? 1 2023/03/26 02:16
- MySQL SQLについて教えて下さい。 SELECT分で、あるカラムにある日付の 半年先のデータを取って来たい 3 2022/12/07 22:28
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Java 動かなくなったのでJavaソースを手直しお願いします。 2 2022/04/30 05:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースからのインポート...
-
MS-Accessのエクスポートで異常...
-
Sqliteで使えない文字。
-
データベース作成について
-
接続されてるユーザーを切断す...
-
Accessdでの「トランザクション...
-
postgresql についてです
-
SQL Server のテーブルについて
-
SQLServer2000からSQLServer200...
-
マネーフォワードのアプリでク...
-
SQLの実行と発行は同じ意味...
-
Symantec System Recovery
-
SQL2008から2000へデータコピー...
-
ファイルメーカーで画像を参照...
-
SQLSERVER2008 R8についてお願...
-
ファイルサイズって
-
SQL SERVER 2005 EXPRESS EDITION
-
SQLServerのバックアップ
-
SQLiteと管理ソフト
-
復元に異常に時間がかかる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MS-Accessのエクスポートで異常...
-
ACCESSのデータをWebブラウザで...
-
ACCESS2010 Excelエクスポート ...
-
Sqliteで使えない文字。
-
1回目の実行に3分、2回目の実行...
-
SQL文で、重複データの上書きは...
-
SQLServerのデータを支店間で参...
-
暗号化したDBのデータ移行
-
SQL ServerにExcelをリンクさせ...
-
会社の諸事情により全システム...
-
処理しきれないクエリ
-
accessの上限容量2Gでは容量が...
-
SQL Server 2005 Compact Editi...
-
ACCESSのクエリからORACLEのDB...
-
oracleデータベースの更新履歴
-
過去データに対するデータベー...
-
ACOSのRDBについて教え...
-
別サーバーへのデータの同期更...
-
AccessのLANでの共有
-
データファイルに書き込まれる...
おすすめ情報