0

我正在开发一个社交网站。我有一个名为的选项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

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

4

2 回答 2

4

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

于 2013-02-12T10:21:49.477 回答
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;
于 2013-02-12T11:03:17.147 回答