【问题标题】:Issue in mysql Join querymysql Join查询中的问题
【发布时间】:2013-02-12 10:17:29
【问题描述】:

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

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

【问题讨论】:

标签: php mysql inner-join


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    试试这个:

    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;
    

    【讨论】:

      猜你喜欢
      • 2018-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多