mysql:13366
From: "GotouYutaka" <"GotouYutaka" <yu.gotou@xxxxxxxxxx>>
Date: Wed, 20 Sep 2006 15:46:06 +0900
Subject: [mysql 13366] Re: 最善の検索方法を教えて下さい
先頭の親を0として、子を1、孫を2、ひ孫は3という風に階層番号を決めておいて、 そういうフィールドをつくって親番号を入れておけば、一つのレコードを見ただけで親番号やじいさん番号がわかるのではないでしょうか。 YuGo ----- Original Message ----- From: "megu" <samplemailsend@xxxxxxxxxx> To: <ml@xxxxxxxxxx> Sent: Wednesday, September 20, 2006 3:24 PM Subject: [mysql 13365] 最善の検索方法を教えて下さい こんにちは、杉本といいます。 いつもML Logを活用させて頂いています。 投稿は今回が初めてです。宜しくお願い致します。 PerlからMySQL4.0へ接続しています。 色々と調べたのですが最善の方法が分からず困っています。 アドバイスをお願いしたいと思います。 以下のようなテーブルがあるとします テーブル名:tbl1 +------+------+-----+ | num1 | num2 | sub | +------+------------+ | 1111 | | A | | 2222 | | B | | 3333 | 1111 | C | | 4444 | 2222 | D | | 5555 | 3333 | E | | 6666 | 3333 | F | +------+-------------+ num1は一意であり、num2は他レコードのnum1、またはカラです。 num2がカラのものは先頭親レコード、カラでないものはいずれかの 先頭親レコードの子レコードとなります。 上の例の場合、 sub=Aとsub=Bが先頭親レコードとなり、 sub=Cはsub=Aの子レコード、 sub=Dはsub=Bの子レコード、 sub=Eはsub=Cの子レコードでありsub=Aの子レコード sub=Fはsub=Cの子レコードでありsub=Aの子レコード となります。 何を求めたいかというと、 「大きいnum1を持つレコードの先頭親レコードN件」 です。 先頭親レコード自身が大きなnum1を持つかもしれないし、 末端の子レコードが大きなnum1を持つかもしれない。 先頭親レコードが最小のnum1を持っていても、子レコードが最大のnum1を持っていれ ば この親レコードを取得したいのです。 問題なのは、子レコードから直接先頭の親レコードが分からないかもしれないという ことです。 全てのデータをひっぱってきてループさせながら希望の先頭親レコードを取得するこ とは もちろん出来るのですが、 何かもっと速く検索出来る良い方法があるのではないかと思って質問させて頂きまし た。 宜しくお願い致します。 -------------------------------------- [10th Anniversary] special auction campaign now! http://pr.mail.yahoo.co.jp/auction/
13365 2006-09-20 15:24 ["megu" <samplemailse] 最善の検索方法を教えて下さい -> 13366 2006-09-20 15:46 ┣["GotouYutaka" <yu.go] 13367 2006-09-20 16:00 ┃┗["megu" <samplemailse] 13368 2006-09-20 16:13 ┗[<hata@xxxxxxxxxx> ] 13369 2006-09-20 16:17 ┣[<hata@xxxxxxxxxx> ] 13370 2006-09-20 17:19 ┗["megu" <samplemailse] 13372 2006-09-21 08:59 ┗[<hata@xxxxxxxxxx> ] 13373 2006-09-21 09:31 ┗["megu" <samplemailse]