3

「senderid」と「receiverid」が存在するメッセージテーブルがあります。各ユーザーのユーザー名が記載されたユーザーテーブルがあります。

ここで、userid=senderidのユーザー名とuserid=receivernameのユーザー名を選択するストアドプロシージャを作成します。

私はこれを試しましたが、それは間違っています、私は以前にこのようなものを作ったことがありません。

SELECT       SystemUser.SU_Username Where SystemUser.SU_ID=MessageReciever As RecieverName, SystemUser.SU_Username where Message.SenderID = SystemUser.SU_ID As SenderName FROM            Message CROSS JOIN
                     SystemUser

私がやりたいことをする方法はありますか?

4

3 に答える 3

6

SystemUserテーブルからテーブルエイリアスを使用して2回選択します。

SELECT       SUR.SU_Username  As RecieverName
           , SUS.SU_Username As SenderName 
FROM            Message 
               JOIN SystemUser SUR
                  on (SUR.SU_ID = Message.MessageReciever )
               JOIN SystemUser SUS
                  on (SUS.SU_ID = Message.SenderID )
于 2012-09-23T13:44:26.037 に答える
1

かなり長い間あなたのSQLを見た後、私はあなたがやりたいことを理解したと思います:ちょうど2回参加する

select  r.SU_Username as RecieverName,
        s.SU_Username as SenderName
from    Message m
inner join SystemUser r on (r.SU_ID = m.MessageReciever)
inner join SystemUser s on (s.SU_ID = m.SenderID)
于 2012-09-23T13:46:37.370 に答える
1

次のようなものが与えられます:

create table users ( name text, id integer );
create table messages ( receiver_id integer, sender_id integer );

あなたが探しているものは次のようになります:

select us.name as sender_name, ur.name as receiver_name
from users us, users ur, messages m
where us.id = m.sender_id and ur.id = m.receiver_id;
于 2012-09-23T13:47:40.433 に答える