SQL sooの初心者です。cometchatの友人テーブルのこの「大きな」選択に大きな問題があります。誰か書いてくれませんか。
Cometchat は friends テーブル用に構成されています。
friends
toid fromid
id 2 1
id 1 2
およびそれを選択するSQL:
$sql = ("select DISTINCT ".TABLE_PREFIX.DB_USERTABLE.".".DB_USERTABLE_USERID." userid, ".TABLE_PREFIX.DB_USERTABLE.".".DB_USERTABLE_NAME." username,
".TABLE_PREFIX.DB_USERTABLE.".".DB_USERTABLE_LASTACTIVITY." lastactivity,
".DB_AVATARFIELD." avatar, ".TABLE_PREFIX.DB_USERTABLE.".".DB_USERTABLE_USERID." link,
cometchat_status.message, cometchat_status.status
from ".TABLE_PREFIX."friends join ".TABLE_PREFIX.DB_USERTABLE." on ".TABLE_PREFIX."friends.toid = ".TABLE_PREFIX.DB_USERTABLE.".".DB_USERTABLE_USERID." left join cometchat_status on ".TABLE_PREFIX.DB_USERTABLE.".".DB_USERTABLE_USERID." = cometchat_status.userid ".DB_AVATARTABLE."
where ".TABLE_PREFIX."friends.fromid = '".mysql_real_escape_string($userid)."' order by username asc");
return &sql;
私のRailsアプリには友情テーブルがあります:
friendships
user_id friend_id
id 1 2
id 2 1
順序を変更しただけでは機能しません。これは今の私には難しすぎると思います。Railsでは、どの友情が自分のプロフィールのuser_idを持っているかを確認し、friend_isを友達として表示します。
これは、フレンド テーブルを使用した標準の cometchat 設定用に生成された SQL です。
select DISTINCT users.id userid,
users.name username,
users.current_sign_in_at lastactivity,
users.id avatar,
users.id link,
cometchat_status.message,
cometchat_status.status
from friends
join users on friends.toid = users.id
left join cometchat_status on users.id = cometchat_status.userid
where friends.fromid = '10'
order by username asc
私はテーブルを友達から私の悪魔とtoid(friend_idで)とformid(user_idで)に、そしてその逆に変更しようとしましたが、それでもうまくいかず、友達リストを取得できません。