#php #html #mysql #sql #phpmyadmin
Вопрос:
У меня есть таблица chatmessages
, в которой есть столбец chatId, incomingId, outgoingId, и у меня есть другая таблица chatmembers
, в которой есть столбец chatId, usersId. Также еще одна таблица chat
, содержащая только идентификатор чата и инициализатор usersId чата, который является user1
Теперь я хочу скопировать идентификатор чата chatmembers
туда chatmessages
, где внутри него находятся одни и те же пользователи, например, идентификатор входа 83 и идентификатор выхода 81 имеют один и тот же идентификатор в chatmembers
У меня есть этот запрос, но он не работает
UPDATE chatmessages SET chatId =
(SELECT c.chatId FROM chat AS c INNER JOIN (SELECT chatId FROM chatmembers WHERE usersId = incomingId) AS uc ON c.chatId = uc.chatId
INNER JOIN (SELECT chatId FROM chatmembers WHERE companyId = outgoingId) AS cc ON uc.chatId = cc.chatId)
Комментарии:
1. Отметьте свой вопрос в базе данных, которую вы используете.
Ответ №1:
Если я правильно понимаю, вы могли бы использовать join
s. Ниже используется синтаксис MySQL:
update chatmessages cm join
chatusers cuo
on cuo.userid = cm.outgoingid join
chatusers cui
on cui.userid = cm.incomingid and
cui.chatid = cuo.chatid
set cm.chatid = cuo.chatid;
Комментарии:
1. Спасибо, хм, могу я узнать, что не так с кодом, который я делал раньше? должно ли это тоже работать или мне нужно использовать JOIN, когда дело доходит до ОБНОВЛЕНИЯ?
2. @DanncarloReformado . . . Я не знаю, в чем проблема с вашим кодом. Мне очень трудно это читать.
3. Ваш ответ сработал, я просто хочу знать, что не так с моим предыдущим запросом на ОБНОВЛЕНИЕ, сэр, спасибо!
Ответ №2:
вы должны записать этот запрос в массив и затем выполнить, также используйте двойные кавычки в
(SELECT c.chatId FROM chat AS c
INNER JOIN (SELECT chatId FROM chatmembers WHERE usersId = incomingId) AS uc ON c.chatId = uc.chatId
INNER JOIN (SELECT chatId FROM chatmembers WHERE companyId = outgoingId)
подобный этому
("SELECT c.chatId FROM chat AS c
INNER JOIN (SELECT chatId FROM chatmembers WHERE usersId = incomingId) AS uc ON c.chatId = uc.chatId
INNER JOIN (SELECT chatId FROM chatmembers WHERE companyId = outgoingId")
Комментарии:
1. Извините, но это не мой вопрос. Спасибо