Mysql加入线程收件箱

Mysql加入线程收件箱,mysql,join,case,Mysql,Join,Case,我正在构建一个类似facebook线程的系统 我的问题是当conv_fromid或conv_toid与登录的用户id相同时, 它打印了错误的用户名。所以我在寻找一种切换方法。我不知道你/我是否可以使用sql case 基本上,问题是: 当登录的userid等于conv_fromid时,它需要基于conv_toid(不再是conv_fromid)加入pub_用户 如果登录的userid等于conv_toid,则需要基于conv_fromid加入pub_用户 我的请求: SELECT * FRO

我正在构建一个类似facebook线程的系统

我的问题是当
conv_fromid
conv_toid
与登录的用户id相同时, 它打印了错误的用户名。所以我在寻找一种切换方法。我不知道你/我是否可以使用sql case

基本上,问题是:

  • 当登录的userid等于conv_fromid时,它需要基于conv_toid(不再是conv_fromid)加入pub_用户
  • 如果登录的userid等于conv_toid,则需要基于conv_fromid加入pub_用户
我的请求:

SELECT * FROM pub_conversations a
        INNER JOIN pub_users b
            ON a.conv_toid = b.user_id
        WHERE conv_fromid ='". get_uid() ."'
        OR conv_toid='". get_uid() ."'
因此,输出结果应该是登录用户与之对话的所有用户的列表

我不确定今晚我的大脑是否融化了:

SELECT * FROM pub_conversations a
        INNER JOIN pub_users b
          ON a.conv_toid = b.user_id AND conv_fromid ='". get_uid() ."'
          OR a.conv_toid='". get_uid() ."' AND conv_fromid != b.user_id


SELECT * FROM pub_conversations a
        INNER JOIN pub_users b
            ON b.user_id =(
CASE
 WHEN `conv_fromid`='". get_uid() ."' THEN `conv_toid`
 WHEN  `conv_toid`='". get_uid() ."' THEN `conv_fromid` ELSE -1 
END
)
我不确定今晚我的大脑是否融化了:

SELECT * FROM pub_conversations a
        INNER JOIN pub_users b
          ON a.conv_toid = b.user_id AND conv_fromid ='". get_uid() ."'
          OR a.conv_toid='". get_uid() ."' AND conv_fromid != b.user_id


SELECT * FROM pub_conversations a
        INNER JOIN pub_users b
            ON b.user_id =(
CASE
 WHEN `conv_fromid`='". get_uid() ."' THEN `conv_toid`
 WHEN  `conv_toid`='". get_uid() ."' THEN `conv_fromid` ELSE -1 
END
)
最终使用了

SELECT * FROM pub_users a, pub_conversations b
    WHERE (CASE WHEN b.conv_fromid = ". get_uid() ." THEN b.conv_toid ELSE b.conv_fromid END) = a.user_id
无论如何,感谢您抽出时间:)

最终使用了

SELECT * FROM pub_users a, pub_conversations b
    WHERE (CASE WHEN b.conv_fromid = ". get_uid() ." THEN b.conv_toid ELSE b.conv_fromid END) = a.user_id

无论如何,感谢您抽出时间:)

为什么不创建一个对话表,以便您可以轻松地对所有邮件进行分组呢。然后,您将能够为每个对话添加3个以上用户的功能,并更轻松地提取所有消息。我有对话表和消息表,因此可以对它们进行分组:)为什么不创建一个对话表,以便轻松地对所有消息进行分组呢。然后,您将能够为每个对话添加3+个用户的功能,并且提取所有消息将更容易。我有对话和消息表,所以我能够对它们进行分组:)嗯。。。当我使用您的示例时,在一个用户上,它输出您没有对话的所有用户名,而在另一个用户上,它显示您有对话的用户-奇怪:P您可以做一个小提琴吗?哪里可以做sql提琴DHmm。。。当我使用您的示例时,在一个用户上,它输出您没有对话的所有用户名,而在另一个用户上,它显示您有对话的用户-奇怪:P您可以做一个小提琴吗?哪里可以做sql提琴D