1

システムのようなFacebookのスレッドを構築しています。

私の問題は、conv_fromidまたはconv_toidがログインしたユーザー ID と同じ場合、間違ったユーザー名が出力されることです。だから私はある種のスイッチ方法を探しています。あなた/私がSQLケースを使用できるかどうかわかりませんか?

基本的に問題は次のとおりです。

  • ログインしたユーザー ID が conv_fromid と等しい場合、conv_toid に基づいて pub_users に参加する必要があります (conv_fromid ではありません)。
  • ログインしたユーザー ID が conv_toid と等しい場合、conv_fromid に基づいて pub_users に参加する必要があります。

私の要求 :

SELECT * FROM pub_conversations a
        INNER JOIN pub_users b
            ON a.conv_toid = b.user_id
        WHERE conv_fromid ='". get_uid() ."'
        OR conv_toid='". get_uid() ."'

したがって、最終的に出力されるのは、ログインしているユーザーが会話しているすべてのユーザーのリストです。

http://sqlfiddle.com/#!2/feb21

4

2 に答える 2

1
SELECT * FROM pub_conversations a
        INNER JOIN pub_users b
          ON a.conv_toid = b.user_id AND conv_fromid ='". get_uid() ."'
          OR a.conv_toid='". get_uid() ."' 

今夜は脳が溶けているかどうかわかりません:

SELECT * FROM pub_conversations a
        INNER JOIN pub_users b
          ON a.conv_toid = b.user_id AND conv_fromid ='". get_uid() ."'
          OR a.conv_toid='". get_uid() ."' AND conv_fromid != b.user_id


SELECT * FROM pub_conversations a
        INNER JOIN pub_users b
            ON b.user_id =(
CASE
 WHEN `conv_fromid`='". get_uid() ."' THEN `conv_toid`
 WHEN  `conv_toid`='". get_uid() ."' THEN `conv_fromid` ELSE -1 
END
)
于 2013-10-15T16:47:30.350 に答える
0

使い終わった

SELECT * FROM pub_users a, pub_conversations b
    WHERE (CASE WHEN b.conv_fromid = ". get_uid() ." THEN b.conv_toid ELSE b.conv_fromid END) = a.user_id

とにかく時間をありがとう:)

于 2013-10-16T19:47:54.410 に答える