2009-08-18 3 views
0

私はこの質問を以前に聞いたことがありますが、まだこれを得ることができませんでした。誰かが自己参加を提案しましたが、どこで動作するのかわかりません。私はまだ間違った結果で2行を取得しています。自己結合はまだ存在しますが、私は必要な結果を得ることができません。これに最終結果の2行目の列を2行追加する方法を教えてください。

id sender   recipient 
1 Administrator Administrator 
1 Miller   Miller 

:私はこれから行きたい

ここ

id sender   recipient 
1 Administrator Miller 

は、私が働いているSQLです。

SELECT 
t1.msg_id AS id, 
t3.lastname AS sender, 
t4.lastname AS recipient 
FROM 
mail_message AS t1 
Inner Join mailbox AS t2 ON t2.msg_id = t1.msg_id 
Inner Join employee AS t3 ON t3.employee_id = t2.employee_id 
Inner Join employee AS t4 ON t3.employee_id = t4.employee_id 

答えて

1

t3.employee_id = t4.employee_id)に参加あなたの最後のは明らかに間違っている - あなたは自分自身にemployeeに参加しています。その状態をmailboxまたはmail_messageのjoinで置き換える必要があります。正確なテーブル構造を見ずに言うのは難しいです。投稿できますか?

+0

こんにちは。私はここに構造を持っていない、それは仕事中のサーバ上にあり、私は午後6時以降にアクセスすることはできない。 VPNがダウンしています。私が持っているのはSQLだけです。私は、SQLが正しくないと考えました。私はおそらくメールボックスに参加する必要があると思う。他の提案がありますか?> –

+1

私はあなたが 'mail_message'に参加する必要があると思います。おそらくそれは何らかの' sender_id'と 'recipient_id'を持っています。私はテーブル名だけに基づいて推測しています。あなたは 'employee 'を2回、送信者と受信者として2回参加させる必要があります。あなたのテーブルを見れば、参加する列を知ることができます。そうでない場合は、ここに構造物(および/またはサンプルデータ)を掲示してください。 – ChssPly76

関連する問題