- 締切済み
親子関係があるテーブルでの抽出
教えてください。 ASPでMDBを検索したいのですが、 SQLにどうかけばいいのか悩んでします。 テーブルAがあります。 ID、名前、住所、親IDというフィールドがあります。 実は親子関係がこのテーブルには含まれていまして、 子データには、親IDに親データのIDが入っています。 子データにも名前、住所が入っています。 親データの親IDには0が入っています。 このテーブルAの名前・住所・子データの名前・子データの住所で 文字検索したいのですがどのようなSQLになりますか? 子データは、ないものもあります。 以上よろしくおねがいします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
説明が下手で申し訳ありません。 テーブルA.親ID = テーブルA_1.ID ということはテーブルAは子データで、テーブルA_1が親データということになると思います。 (テーブルAの親ID = テーブルA_1のIDという設定をしていますので。)
失礼しました。 完全に質問を取り違えていました。 現状のデータ構造のまま考えるなら、親のデータを含めて表示させるクエリを作って抽出するのが一番楽だと思います。 そっくり同じテーブル テーブル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句をつければできると思います。
補足
再び、回答ありがとうございます。 教えてもらったとおりにしてみたのですが、だめです。 これって、テーブルA_1が子ですよね? でもテーブルAに子データが表示されます。
子データのみを抽出したいなら、 WHERE句に 検索条件については、普通通りLIKEを使ってそれに AND [親ID]=0 を加えればよいだけだと思います。
補足
書き方がややこしくてもすみません。 親データ・子データともに検索対象です。 あと子データは、親ID=0ではないです。
お礼
すみません。 やっとわかりました・・・。 教えていただいたSQLでは、 親子関係のあるデータしかとってこれないので、親のみデータと親子データを抽出して。さらにユニオン作成することにしました。 何度もありがとうございました。