完美的联合加入以获得结果

时间:2014-08-15 08:58:46

标签: sql-server

我联合加入两列,我在两列中获得了c@mail.com的记录。这是完美的。但我想要实现的是一个特定的用户" bb@mail.com"登录后,点击用户c@mail.com,他应该可以看到通过c@mail.com发送给他的消息,同时当c@mail.com登录时他也必须能够看到消息通过b@mail.com发给他的 因为当我执行时我似乎得到了c@mail.com发送给表中每个用户的所有消息。  我如何加入这些领域以使其发挥作用

 SELECT *
 FROM   dbo.IM
        INNER JOIN profile ON im.sid = profile.profile_id
 WHERE  sid = '3'
        AND im_sender = 'c@mail.com'
 UNION
 SELECT *
 FROM   dbo.IM
        INNER JOIN profile ON im.sid = profile.profile_id
 WHERE  rid = '2'
        AND im_reciever = 'bb@mail.com'
 ORDER BY id ASC

我使用下面的图片来解释。我只想将登录用户c@mail.com发送的记录返回给cgblay .....,但是如你所见,也发现了e@mail.com的记录 enter image description here

1 个答案:

答案 0 :(得分:0)

对您的问题不太确定。好像你在这之后

SELECT *
FROM   dbo.IM
        INNER JOIN profile ON im.sid = profile.profile_id
WHERE  sid = '3'
       AND im_sender = 'c@mail.com'
       and rid = '2'
       AND im_reciever = 'bb@mail.com'