人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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
の値が取得できれば正解です。

●質問者: goldman
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:007 SQL セレクト レコード 定義
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● asekichi
●15ポイント

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

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

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

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

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


2 ● upride
●15ポイント

http://google.co.jp/

Google

urlダミーです

001

└002

├005

└006

└007

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

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

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

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

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

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

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

[参考:再帰処理]

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

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

SQL文発行・・・

階層n表示処理・・・

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

}

}

◎質問者からの返答

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


3 ● hideee
●15ポイント

http://www.yahoo.co.jp/

Yahoo! JAPAN

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

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

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

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


4 ● shinchang
●15ポイント

http://yahoo.co.jp/

Yahoo! JAPAN

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

SELECT * FROM TEST_TABLE

WHERE

code_id = ’002’

AND code_id = 親code_id

#URLは、ダミーです。

◎質問者からの返答

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


5 ● Tarke
●15ポイント

http://www.livedoor.com/

livedoor

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

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

◎質問者からの返答

なりますねえ


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ