• 締切済み

親子関係があるテーブルでの抽出

教えてください。 ASPでMDBを検索したいのですが、 SQLにどうかけばいいのか悩んでします。 テーブルAがあります。 ID、名前、住所、親IDというフィールドがあります。 実は親子関係がこのテーブルには含まれていまして、 子データには、親IDに親データのIDが入っています。 子データにも名前、住所が入っています。 親データの親IDには0が入っています。 このテーブルAの名前・住所・子データの名前・子データの住所で 文字検索したいのですがどのようなSQLになりますか? 子データは、ないものもあります。 以上よろしくおねがいします。

みんなの回答

noname#60992
noname#60992
回答No.3

説明が下手で申し訳ありません。  テーブルA.親ID = テーブルA_1.ID  ということはテーブルAは子データで、テーブルA_1が親データということになると思います。  (テーブルAの親ID = テーブルA_1のIDという設定をしていますので。)

angelinaane
質問者

お礼

すみません。 やっとわかりました・・・。 教えていただいたSQLでは、 親子関係のあるデータしかとってこれないので、親のみデータと親子データを抽出して。さらにユニオン作成することにしました。 何度もありがとうございました。

noname#60992
noname#60992
回答No.2

失礼しました。 完全に質問を取り違えていました。 現状のデータ構造のまま考えるなら、親のデータを含めて表示させるクエリを作って抽出するのが一番楽だと思います。 そっくり同じテーブル テーブルA_1 にリンクをつけて、 SELECT テーブルA.ID, テーブルA.名前, テーブルA.親ID, テーブルA_1.名前 FROM テーブルA LEFT JOIN テーブルA AS テーブルA_1 ON テーブルA.親ID = テーブルA_1.ID; ちょっとフィールドを端折っていますが、これにwhere句をつければできると思います。 

angelinaane
質問者

補足

再び、回答ありがとうございます。 教えてもらったとおりにしてみたのですが、だめです。 これって、テーブルA_1が子ですよね? でもテーブルAに子データが表示されます。

noname#60992
noname#60992
回答No.1

子データのみを抽出したいなら、 WHERE句に 検索条件については、普通通りLIKEを使ってそれに  AND [親ID]=0 を加えればよいだけだと思います。

angelinaane
質問者

補足

書き方がややこしくてもすみません。 親データ・子データともに検索対象です。 あと子データは、親ID=0ではないです。