1

3 つのテーブルがあるとします。

プロジェクト
----------
プロジェクト ID PK
サブプロジェクト
----------
プロジェクト ID PK  
subProjectId PK

基本的に、すべてのプロジェクトが Projects テーブルに一覧表示されます。プロジェクトはサブプロジェクトを持つことができます。たとえば、テーブルに次の行があるとします。

プロジェクト
----------
1
2
3
サブプロジェクト
----------
1,2
1,3

プロジェクト 1、2、3 の 3 つのプロジェクトがあります。プロジェクト 2 と 3 は、プロジェクト 1 のサブプロジェクトです。

2 つの質問があります。まず、外部キーは、サブプロジェクト内の projectId および subProjectId を参照するプロジェクト内の projectId にするか、プロジェクト内の projectId を参照するサブプロジェクト内の projectId およびプロジェクト内の projectId を参照するサブプロジェクト内の subProjectId にする必要があります。

プロジェクトは、複数のプロジェクトのサブプロジェクトになることができることに注意してください。

次に、クエリを使用してプロジェクトのサブ プロジェクトを取得するにはどうすればよいですか。私は使用しています:


Select * from projects p1 Join subProjects sp Join projects p2 
where p1.projectId = sp.subProjectId and sp.subProjectId = p2.projectId;

次の結果が得られます。

1、2
1 , 3

ただ戻ってきてほしい

2
3
4

3 に答える 3

1


http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html
に詳述されているように、自己参照関係を探している可能性があると思います。このテーブルにはparent_project_idと呼ばれるforeign_keyがあり、プロジェクトがサブプロジェクトの場合、そのサブプロジェクトはそのparent_project_idを使用して親であることを示します。親には、外部キーに関して子への参照がありません。

于 2012-06-08T01:00:14.317 に答える
0

*2 番目の部分では、を 2,3 が該当する列名に置き換えます。sp列名が表示されないため、p1かかどうかわかりませんp2

于 2012-06-08T02:33:43.800 に答える
0

これらのコードを自動的に作成する SQLmaestro というアプリケーションがあります。mysql コード (テーブル、連結、ジョイント、カスタム クエリなど) を生成します。

リンクは次のとおりです 。 http://www.sqlmaestro.com/products/mysql/maestro/

于 2012-06-08T00:52:31.350 に答える