Mysql自己接続クエリーインスタンスの詳細

2731 ワード

この例では、Mysql自己接続クエリーについて説明します.皆さんの参考にしてください.具体的には以下の通りです.
自己接続クエリー
仮想以下のシーン:ある電子商取引サイトは駅内の製品を階層的に分類したいと思っています.1つのカテゴリの下にはいくつかのサブクラスがあり、サブクラスの下にも別のサブクラスがあります.例えば、デジタル製品というカテゴリの下には、ノートパソコン、デスクトップ、スマートフォンなどがあります.ノートパソコン、デスクトップ、スマートフォンはブランド別に分類できます.ブランドは価格によって分類することもできます.これらの分類は深い階層に達し、木状の構造を呈するかもしれません.では、これらのデータはどのようにデータベースに表示されますか?データベースに2つのフィールドを作成してidとカテゴリ名を格納し、3番目のフィールドを使用してカテゴリのサブクラスまたは親クラスのidを格納し、最後に自己接続で目的の結果をクエリーできます.
セルフジョイン・クエリーは、ジョイン・クエリーと同じです.2つのテーブルが必要ですが、左のテーブル(親テーブル)と右のテーブル(子テーブル)はすべて独自です.自己接続クエリーを行うときは、自分と自分で接続し、親テーブルと子テーブルに2つの異なる別名を付け、接続条件を添付します.次の例を見てください.
1.データテーブルの作成:

create table tdb_cates(
 id smallint primary key auto_increment,
 cate_name varchar(20) not null,
 parent_id smallint not null
);


注意:cate_nameは分類の名前を表し、parent_idは親のidを表す.
2.データの挿入:

insert into tdb_cates(cate_name, parent_id) values('    ', 0);
insert into tdb_cates(cate_name, parent_id) values('    ', 0);
insert into tdb_cates(cate_name, parent_id) values('   ', 1);
insert into tdb_cates(cate_name, parent_id) values('    ', 1);
insert into tdb_cates(cate_name, parent_id) values('  ', 2);
insert into tdb_cates(cate_name, parent_id) values('  ', 2);
insert into tdb_cates(cate_name, parent_id) values('  ', 5);
insert into tdb_cates(cate_name, parent_id) values('   ', 5);
insert into tdb_cates(cate_name, parent_id) values('    ', 0);
insert into tdb_cates(cate_name, parent_id) values('  ', 9);
insert into tdb_cates(cate_name, parent_id) values('  ', 9);
insert into tdb_cates(cate_name, parent_id) values('   ', 9);
insert into tdb_cates(cate_name, parent_id) values('  ', 0);


クエリの結果:
3.すべての分類および分類の親を問い合わせる:仮想的に左右の2つのテーブル(いずれもtdb_cates)があり、左のテーブルはサブテーブルで、右のテーブルは親テーブルである.サブテーブルのid、サブテーブルのcate_をクエリーname,親テーブルのcate_name;接続条件はサブテーブルのparent_idは親テーブルのidに等しい.

   select s.id, s.cate_name, p.cate_name from tdb_cates s left join tdb_cates p on s.parent_id=p.id; 
 

クエリの結果:
4.すべての分類および分類のサブクラスを問い合わせる:または左右の2つのテーブル(いずれもtdb_cates)があると仮定し、左のテーブルはサブテーブル、右のテーブルは親テーブルである.サブテーブルのid、サブテーブルのcate_をクエリーname,親テーブルのcate_name;接続条件は、サブテーブルのidが親テーブルのparent_に等しいことです.id.

   select s.id, s.cate_name, p.cate_name from tdb_cates s left join tdb_cates p on p.parent_id=s.id; 
 

クエリの結果:
MySQLについてもっと兴味のある読者は、「MySQL検索テクニック大全」、「MySQL常用関数大概」、「MySQLログ操作テクニック大全」、「MySQLトランザクション操作テクニック大概」、「MySQLストレージプロセステクニック大全」および「MySQLデータベースロックに関するテクニック大概」を参照してください.
本明細書では、MySQLデータベース・メーターについて説明します.