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です。

各行データは2回表示されます。なぜそれが起こるのか分かりません。

4

2 に答える 2

4

内部結合にはON句がありません。1つ追加してみてください。これにより、二重の結果が削除されます。

于 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 に答える