2012-03-08 4 views
0

を使用して、2つの個々のクエリの結果を達成:は、以下に示すように、私はUSERのテーブル構造を持って、JOIN

id parent_id  userName 
10  01  Project manager 
11  10  manager 
12  11  teamlead 
13  12  team member 

私はwhere句でチームメンバーのIDを与える場合は、プロジェクトマネージャーのIDを見つける必要があります。個々のクエリで結果を得ることができます。

しかし、私はJOINクエリで実装しようとしています。私はJOINクエリーを初めて使う人です。どうすればいいのですか?

+0

これに 'cursor'を使うことができます –

+0

2番目のテーブルの名前は何ですか? – Milap

+2

このためにカーソルを使用しないでください。単純な結合では – Lamak

答えて

1

私は、これは、これは単純結合よりも少しを必要とするかのように見え、既存のスキーマ

SELECT ParentUser.UserName AS ManagerName, BaseUser.UserName AS TeamMemberName 
FROM User AS BaseUser 
    INNER JOIN User AS ParentUser 
     ON BaseUser.parent_id = ParentUser.id 
WHERE BaseUser.Id = @PassedInTeamMemberId 
0

基本的にはこれをしたい:

SELECT * FROM TableA 
INNER JOIN TableB 
ON TableA.name = TableB.name 
WHERE TableA.whatever = 'whatever' 

私は美しいと才能ジェフ・アトウッドからこのvisual explanation of joinsは非常に有用であることがわかりました。

+0

再帰的結合です... –

+0

だから?これは質問に答えます。好きでなければ、あなた自身の答えを書いてください。 – JKirchartz

3

で動作するはずと信じています。痛みの世界に入る準備ができている:)。私は最近同様の問題を抱えていましたが、同様の構造を持つテーブルに型階層が格納されています。私が結んだのは、再帰的なクエリを書くことです。 SQL Serverでは、Common Table Expressionを使用します。 mysqlでは、ループを使用します。

基本的に、考えられるのは、トップレベルの要素に到達するまで階層を歩いて自分自身とテーブルを結合することです。背後では、サーバーは仮想テーブルを作成し、「停止条件」に達するまで相互に結合しています。この点はと非常に重要です:停止条件が正しいか、または重大な問題が発生する可能性があります。

This postは大変です。また、googleのhierarchical query mysqlという用語を一般的に検索すると、豊富な情報が得られます。

関連する問題