我正在建立一个af facebook的线程式系统。
我的问题是当conv_fromid
或conv_toid
与登录的用户id相同时,
它打印了错误的用户名。所以我在寻找一种转换方法。我不知道您/我是否可以使用sql case?
基本问题是:
当登录用户id等于convúfromid时,需要基于convútoid加入pubúu用户(不再是convúfromid)
如果登录的用户id等于conv-toid,则需要基于conv-fromid加入pub-u用户。
我的请求:
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() ."'
所以输出结果应该是,登录用户与之对话的所有用户的列表
http://sqlfiddle.com/#!2/feb21
最佳答案
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() ."'
我不确定今晚我脑子有没有融化:
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
)