0

私は2つのテーブルを持っています。テーブルのこのリンクを確認できます: http://sqlfiddle.com/#!2/feb71/1

このクエリも取得しました:

SELECT convID,Member1,Member2 
FROM tb_conversation WHERE Member1 = '1008' OR Member2 = '1008'

tb_conversation最初のクエリは、メンバー 1008 の ID を持たない列のレコードを持つ新しい列を作成するためのテーブルです。

| CONVID | MEMBER1 | MEMBER2 | newColumn |
|    1   |   1008  |   1017  |    1017   |

2番目のクエリは、2つのテーブルを結合し、それら2つのメンバー間に関係があるかどうかを確認することです(関係を持たせるには、2つのレコードがあり、1が関係しfromID = 1008、他のレコードが1に関係します)toID = 1017relStatus = 1fromID = 1017toID = 1008relStatus

実際には、友達リストにある (そして会話が存在する) メンバーと、友達リストにない (そして会話が存在する) メンバーを取得する必要があります。

助言がありますか?

4

1 に答える 1

0

How about:

select tb0.*, tm0.relStatus from tb_conversation tb0 join
  tb_member_relation tm0 on 
    tm0.fromID = tb0.Member1 or
    tm0.toID = tb0.Member1 or
    tm0.fromID = tb0.Member2 or
    tm0.toID = tb0.Member2
  where tm0.fromID = 1008 or tm0.toID = 1008;

This should get you the conversations where 1008 is involved.

but

if you alter your table structure to eliminate the need for 'from' and 'to' and just use ends of a conversation you could simplify this a great deal.

于 2013-07-04T12:41:51.903 に答える