У меня есть этот код, который группирует сообщение в соответствии с идентификатором зарегистрированного пользователя. Код отлично работает, как есть. Но теперь я хочу внести некоторые изменения, которые я не знаю, чтобы реализовать
мой код запроса
$query_messages = mysqli_query($link,"SELECT PreQuery.*, m2.message, m2.senderID, m2.receiverID from ( SELECT if( m.senderID < m.receiverID, m.senderID, m.receiverID ) as Person1, if( m.senderID < m.receiverID, m.receiverID, m.senderID ) as Person2, max( m.messageID ) as LastMessageIDPerChat, max( m.date ) as LastMessageDate FROM messages m WHERE '$user' IN ( senderID, receiverID ) GROUP BY Person1, Person2 ORDER BY m.date ASC LIMIT 10 ) PreQuery JOIN messages m2 on PreQuery.LastMessageIDPerChat = m2.messageID ORDER BY date DESC"); $row_messages = mysqli_fetch_assoc($query_messages); $totalRows_messages = mysqli_num_rows($query_messages);
Структура БД
Краткое объяснение
Допустим, * переменная зарегистрированного пользователя – $ user
В базе данных пользователь может либо быть идентификатором отправителя, либо идентификатором приемника
Когда пользователь $ удаляет свой разговор, его сообщения обновляются от 0 до 1 в столбце senderdelete или в столбце receiverdelete *
Были проблемы: –
Я хотел бы изменить код запроса MySQLI и добавить его в запрос
if $user is the sender then senderdelete should be value 0
А ТАКЖЕ
if $user is the receiver then receiverdelete should be value 0
Любая помощь?
Я добавил это в предложение where и, похоже, работает
WHERE '$myid' IN ( senderID ) AND senderdelete = 0 OR '$myid' IN ( receiverID ) AND receiverdelete = 0
Полный обновленный код
$query_messages = mysqli_query($link,"SELECT PreQuery.*, m2.message, m2.senderID, m2.receiverID, m2.senderdelete, m2.receiverdelete from ( SELECT if( m.senderID < m.receiverID, m.senderID, m.receiverID ) as Person1, if( m.senderID < m.receiverID, m.receiverID, m.senderID ) as Person2, max( m.messageID ) as LastMessageIDPerChat, max( m.date ) as LastMessageDate FROM messages m WHERE '$myid' IN ( senderID) AND senderdelete = 0 OR '$myid' IN ( receiverID) AND receiverdelete = 0 GROUP BY Person1, Person2 ORDER BY m.date ASC LIMIT 10 ) PreQuery JOIN messages m2 on PreQuery.LastMessageIDPerChat = m2.messageID ORDER BY date DESC"); $row_messages = mysqli_fetch_assoc($query_messages); $totalRows_messages = mysqli_num_rows($query_messages);