mysql加入查询中的问题

时间:2013-02-12 10:17:30

标签: php mysql inner-join

我正在开发一个社交网站。我有一个名为alerts的选项,显示待处理的好友请求和未读消息。我的查询如下:

SELECT
  sk_friends.frndship_from_user_id,
  sk_messages.msg_from_user_id,
  sk_messages.msg_text,
  sk_messages.msg_date 
FROM
  sk_friends INNER JOIN sk_messages
WHERE 
  sk_messages.msg_to_user_id = '$user_id'
  AND sk_friends.frndship_to_user_id ='$user_id'  
  AND sk_friends.frndship_status = 'pending'
  AND sk_messages.msg_status='unread'
ORDER BY 
  sk_friends.fndship_date ASC,
  sk_messages.msg_date ASC;
  • sk_friends和ak_messages是表。
  • msg_from_user_id是发件人的ID
  • frndship_from_user_id是发送请求的用户的ID
  • $ user_id是登录用户的ID

每行数据出现两次。我不知道为什么会这样。

2 个答案:

答案 0 :(得分:4)

您的内部联接没有ON子句。尝试添加一个,这应该删除双重结果。

答案 1 :(得分:0)

试试这个:

SELECT 
    sf.frndship_from_user_id,
    sm.msg_from_user_id,
    sm.msg_text,sm.msg_date 
FROM 
    sk_friends sf ,
    sk_messages sm 
WHERE 
    sm.msg_to_user_id = sf.frndship_to_user_id AND
    sm.msg_to_user_id = '$user_id'  AND     
    sf.frndship_status = 'pending' AND 
    sm.msg_status='unread' 
ORDER BY 
    sf.fndship_date ASC,sm.msg_date ASC;