Я пытаюсь создать список друзей, чтобы пользователи могли пригласить их на мероприятие, но только в том случае, если они еще не посещают мероприятие или ожидающий запрос на приглашение.
Как работает система моих друзей, в таблице 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, потому что этот запрос генерирует список, для которого я затем использую флажки (из которых определяется значение)
Однако, как только событие будет создано, если посещающие его пользователи захотят добавить больше друзей, мне нужен способ вывести своих друзей, но только в том случае, если эти друзья не имеют права посещать или имеют ожидающий запрос.
Столбец в моей таблице событий для посещаемых пользователей называется acceptedInvites
, а столбец для ожидающих запросов - inviteRequest
.
Итак, вот запрос, который я не могу получить на работу. Если 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
Например:
стол друзей
столбцы: friend1, friend2 и friendstatus
(строка 1) userid1: 1 userid2: userid2 friendstatus: 1
(строка 2) userid1: 3 userid2: 1 friendstatus: 1
-userid1 дружит с userid1 и userid3. Как я уже говорил выше, пользователь в userid1
таблица событий
Используемые столбцы принимаются. Приглашения приглашают
(строка 1) acceptInvites: "1 ~ 2" InviteRequests: ""
-userid1 и userid2 присутствуют на мероприятии, приглашений нет в ожидании
Исходя из этого, если userid1 хочет добавить больше друзей, появится только userid3.