0

大家好,我已经尝试了很多年了。

我在这里阅读了很多问题,并尝试根据我的需求调整各种解决方案,但没有结果。

历史:

一个事件有很多参与者。参与者都在活动中相遇,并向他们真正喜欢的所有其他参与者发出“赞”。

在活动结束时,管理员为该活动的每个参与者插入所有喜欢,系统将找到相互喜欢(友谊)

问题:在插入喜欢(双关语)系统以检测天气时,已经建立了友谊(也来自其他事件),如果是这样,请避免在设置喜欢时显示该用户名。

这是我正在使用的表(mysql)

wp_fd_users

编号 | 用户名 | 用户性别 | .. ETC

wp_fd_matches

编号 | event_id | event_user_id | event_user_match_id | ... ETC

匹配表示例

1 | 1 | 1 | 3 | ...
2 | 1 | 1 | 4 | ...
3 | 1 | 2 | 6 | ...
4 | 1 | 3 | 1 | ...

您可以清楚地看到 1 <-> 3 具有相互关系,并且 1 喜欢 4 但不是相互的。我需要一个查询来返回所有结果,避免在一个事件中建立的关系。

像这样的现象:

1 | 1 | 1 | 3 | ...
2 | 1 | 1 | 4 | ...
3 | 1 | 2 | 6 | ...
4 | 2 | 3 | 1 | ...

不会触发类似事件,因为它发生在两个单独的事件中

希望清楚

4

1 回答 1

0

你的问题有点不清楚。我将通过:“我需要一个查询来返回所有结果,避免在一个事件中建立的关系。”

以下自联接实现了这一点:

select m1.*
from wp_fd_matches m1 left outer join
     wp_fd_matches m2
     on m1.event_id = m2.event_id and
        m1.event_user_id = m2.event_user_match_id
        m1.event_user_match_id = m2.event_user_id
where m2.id is null

它寻找匹配的记录。但是,通过使用左外连接,它会获取所有记录。然后它过滤掉匹配的那些。

于 2012-08-20T13:46:02.827 回答