Php 在查询中使用条件语句为join和group by查找适当的列?
我正在开发一个私人信息系统,它看起来更像是一个社交网络信息系统。没有标题,相关的PM像论坛线程一样显示 我有两张桌子记录pmsPhp 在查询中使用条件语句为join和group by查找适当的列?,php,mysql,Php,Mysql,我正在开发一个私人信息系统,它看起来更像是一个社交网络信息系统。没有标题,相关的PM像论坛线程一样显示 我有两张桌子记录pms pm_sessions : pm_session , sender , receiver, pm_counter pm : id , pm_session , text , date , sender pm_会话就像pm的包装器一样工作 现在在用户配置文件中,我想显示从当前用户发送或接收pm的用户列表 问题是我不想分别显示接收者和发送者用
pm_sessions : pm_session , sender , receiver, pm_counter
pm : id , pm_session , text , date , sender
pm_会话就像pm的包装器一样工作
现在在用户配置文件中,我想显示从当前用户发送或接收pm的用户列表
问题是我不想分别显示接收者和发送者用户,我想将所有与我的人交谈的用户都放在一个列表中
这就是我的想法,我现在不知道所有IF语句都是这样工作的
$current_user = $_session['userid'];
$query = "
select pms.sender , pms.receiver,
count(pms.otheruser) as total_dialogs_with_this_user ,
u.username as other_user_name , u.id as other_user_id
from pm_session pms
//// joining to the users table on the other user id
if($current_user = pms.sender)
JOIN users u on pms.receiver= u.id
if($current_user = pms.receiver)
JOIN users u on pms.sender = u.id
WHERE pms.reciver = $current_user || pms.sender = $current_user
/// grouping by other user id
if($current_user = pms.sender)
group by pms.receiver
if($current_user = pms.receiver)
group by pms.sender ";
我希望结果是这样的
HELLO max ... you have been talking to :
ross... 3 dialogs
joey ... 4 dialogs
chandler ... 5 dialogs
我可以很容易地用两个查询来写这篇文章,一个用于接收者,另一个用于发送者
但是就像我说的,我不想把它们分开选择CASE$current\u user
当pms.sender之后是pms.receiver
当pms.receiver然后是pms.sender时
以其他用户id结尾,
u、 用户名作为其他用户名,
将(pms.otheruser)计算为与此用户的对话总数
从pm_会议开始,作为pm
以u的身份加入用户
ON u.id=案例$current\u用户
当pms.sender之后是pms.receiver
当pms.receiver然后是pms.sender时
结束
按其他用户id、其他用户名称分组
mysql允许条件if-else syntex您可以使用它进行查询thanx您似乎只检查当前用户的pms.senders列?我错了吗?谢谢,效果很好,我有一个关于条件语句的问题,它们会对查询性能产生重大影响吗?@max:它们会产生影响,但不太可能有意义。试试看?