SQLの質問です。

親子関係を定義したテーブルがあります。
例) テーブル名:TEST_TABLE
code_id , 親code_id ,code_info
000 null null
001 000 AAAA
002 001 BBBB
003 000 CCCC
004 001 DDDD
005 002 DDDD
006 002 DDDD
007 006 DDDD
最初のCODE_IDの値 002を指定した場合に
配下のレコードをセレクトするSQLを
教えてください。
002 001 BBBB
005 002 DDDD
006 002 DDDD
007 006 DDDD
の値が取得できれば正解です。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答6件)

id:asekichi No.1

回答回数73ベストアンサー獲得回数0

ポイント15pt

http://www.infoseek.co.jp/

楽天が運営するポータルサイト : 【インフォシーク】Infoseek

すみません、質問の意図を読みきれて、なかったら、すみません。

SELECT * FROM TEST_TABLE WHERE code_id = 002 OR 親code_id = 002;

これでだけの話では、ないのです?

id:upride No.2

回答回数220ベストアンサー獲得回数1

ポイント15pt

urlダミーです

001

└002

  ├005

  └006

    └007

おそらくこんなツリーを取得したいのではと推測しますが

(それともポインタを使ったリスト構造でしょうか)

それでしたらSQLだけではなくプログラム言語(PHP、VB やストアド)と併用で構築した方がスマートかと(再帰処理)・・

一発のSQLではおそらくこの結果は取得できないのではないかと思いますが・・

階層に制限があるかないかでも違いますし。

SQLのみはメンテナンス性に欠くような気がしますので

ストアド化するうってつけのような処理だと思います

[参考:再帰処理]

プロシージャA(階層n) {

 階層n番目のデータ取得処理{

  SQL文発行・・・

  階層n表示処理・・・

  プロシージャA(階層n+1)をコール・・

 }

}

id:goldman

SQLだけでは無理でしか〜残念です

2004/09/20 20:20:08
id:hideee No.3

回答回数1ベストアンサー獲得回数0

ポイント15pt

標準的なSQLには再帰的な構造を扱うことができませんので、普通のSELECT文でこのような結果を得る事は出来ません。

どうしてもということであればストアドプロシージャを使用することになります。

一時テーブルを合わせて使用すると実装が簡単になります。

具体的なコードは処理系依存になってしまうのでこれだけの情報ではお答えできません。

id:shinchang No.4

回答回数4ベストアンサー獲得回数0

ポイント15pt

これでいかがでしょうか?

SELECT * FROM TEST_TABLE

WHERE

code_id = ’002’

AND code_id = 親code_id

#URLは、ダミーです。

id:goldman

え! これだけで再帰的にとれますか?

2004/09/20 20:22:44
id:Tarke No.5

回答回数1ベストアンサー獲得回数0

ポイント15pt

select * from TEST_TABLE

where

code_id = ’002’

or 親code_id = ’002’

or 親code_id in (select code_id from TEST_TABLE where 親code_id=’002)

こんなのでどうでしょうか?

008 007 DDDD

なんてのがあったとしたらこれも対象になるんですかね?

id:goldman

なりますねえ

2004/09/21 00:06:28
id:ma2ma2 No.6

回答回数121ベストアンサー獲得回数0

ポイント15pt

http://www.otasuke.ne.jp/

経理初心者おたすけ帳 - 経理・労務・総務の助け合いサイト

親子の関係が何階層までか制限できればビューとか組んで出来そうな気がするのですが。

何階層までがんばらせますか?

何階層か制限できないようでしたら動的に一時テーブルを作るような処理をかませないと難しいと思います。

達人サンたちの回答を楽しみにしています。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません