ユーザーがイベントに招待する友人のリストを生成しようとしていますが、まだイベントに参加していないか、保留中の招待リクエストを持っている場合のみです。LIKEとUnionを使用したSQLクエリ
私の友達システムの仕組みは、テーブルに3つの列があります。 userid1、userid2、およびfriendstatusです。要求を送信したユーザーは列1(userid1
)に入り、要求を受け取ったユーザーは列2(userid2
)に入ります。イベントを作成しているユーザーはどちらの列にあってもかまいません。イベントに友だちを追加するときは、次のクエリを使用します。このクエリは、ユーザーがしたい、それに出席した場合、イベントが作成されたら、私はその後、(値から決定される)
しかし、のチェックボックスを使用してリストを生成するので、
//this block is finding friends from column1
SELECT userid1 as friendID
FROM friends
WHERE userid2 = $myUsername AND friendstatus = 1
UNION
// this section is finding friends from column 2
SELECT userid2 as friendId
FROM friends
WHERE userid1 = $myUsername AND friendstatus = 1
は私がfriendIDとしてユーザーIDを設定しますもっと友達を追加するには、私は友人を引っ張る方法が必要ですが、それらの友人が出席していない、または保留中のリクエストを持っている場合のみです。 参加するユーザーのイベントテーブルの列はacceptedInvites
、保留中の要求の列はinviteRequest
です。
ここでは私が仕事に出られない質問があります。
友人テーブル 列がfriend1あり、friend2とfriendstatus
(行1)USERID1:userid
はacceptedInvites
又はinviteRequest
その値を選択しない
//this section is finding friends from column1
SELECT
events.inviteRequest,
events.acceptedInvites,
friends.userid1 as friendID
FROM friends
LEFT JOIN events on
friends.userid1 NOT LIKE '%events.inviteRequest%' AND
friends.userid1 NOT LIKE '%events.acceptedInvites%'
WHERE friends.userid2 = $userid AND friends.friendstatus = 1
UNION
//this section is finding friends from column 2
SELECT users.userid2 as friendId
FROM friends
LEFT JOIN events on
friends.userid2 NOT LIKE '%events.inviteRequest%' AND
friends.userid2 NOT LIKE '%events.acceptedInvites%'
WHERE friends.userid1 = $userid AND friends.friendstatus = 1
例えば内にある場合: 1 userid2:userid2 friendstatus:1
(2行目)userid1:3 userid2:1 friendstatus:1
-userid1は、userid1とuserid3の友人です。 "1〜2" inviteRequests: ""
-userid1とuserid2 Iが上述したように、USERID1
イベントテーブル内のユーザが使用 カラムはacceptedInvitesのinviteRequests
(行1)acceptedInvitesあります出席している招待状はありません
これに基づいて、userid1がさらに多くの友人を追加したい場合、userid3だけが表示されます。
データを提供して結果を期待すると、皆が素早く見て助けてくれます。 –
申し訳ありませんが、私はあなたが何を意味するのかよく分かりません。あなたは私にテーブルのリストも尋ねていますか? – user1104854
いいえデータのa *サンプル*と、あなたのクエリで取得しようとしているものの*サンプル*を投稿してください。書かれているように、あなたのSQLはまったく無意味です。あなたの 'LIKE'式は、* content *としてワイルドカード間のカラム名を使用しているので、' friends.userid2'に格納されている実際の値が '123events.inviterequest456'のようなものでなければ、決してうまくいかないでしょうそれ)。 –