Иконка ресурса

Полезные SQL запросы

Применимо только для XF 2.1.0 и выше.
Если вдруг интересно посмотреть, какая реакция используется чаще всего.
SQL:
SELECT
  `xf_phrase`.`phrase_text` AS `Reaction Title`,
  COUNT(`xf_reaction_content`.`reaction_id`) AS `Count`
FROM
  `xf_reaction_content`
  INNER JOIN `xf_phrase_map`
    ON `xf_phrase_map`.`title` = CONCAT('reaction_title.', `xf_reaction_content`.`reaction_id`)
    AND `xf_phrase_map`.`language_id` = 3
  INNER JOIN `xf_phrase`
    ON `xf_phrase`.`phrase_id` = `xf_phrase_map`.`phrase_id`
GROUP BY `xf_phrase`.`phrase_text`
ORDER BY `Count` DESC;
Где 3 - ид языка, для которого берём тайтлы. В ответ получите такого рода табличку:
1592243344634.png
 
Подскажите запрос как сразу удалить сообщения которые ожидают модерацию?
Screenshot_10.png
 
Подскажите этот запрос во 2 версии ксенфоро тоже сработает?

Установка статуса "Решено" для всех жалоб:
SQL: UPDATE xf_report SET report_state = 'resolved' WHERE report_state = 'open';
 
А нет ли у кого SQL запроса, который бы показал почасовую статистику по постам за определенный период времени? Например, за последний месяц распределение количества постов за 24 часа?
То есть нужно узнать в какие часы суток приходит больше всего постов.
 
Подскажите как удалить лайки удаленных пользователей.
 
Всем добрый день!
Подскажите пожалуйста, как должен выглядеть запрос на удаление сообщений в личной переписки с определенной темой (например приветственное сообщение для всех или поздравление с Днем Рождения)
Например ЛС с заголовком "Поздравляем" ?
 
приветствую.
подскажите, может быть кто силен в SQL - необходимо удалить все личные сообщения от определенного пользователя, которые были разосланы в определенный (известный) промежуток времени.
заранее спасибо!
 
Всем доброго.
Что-то то-ли хреново искал, то-ли не так вводил. Тему пролистал- не увидел. Как массово одобрить все что весит на модерации?
 
Всем доброго.
Что-то то-ли хреново искал, то-ли не так вводил. Тему пролистал- не увидел. Как массово одобрить все что весит на модерации?
Никак? Там же не просто меняется значение в строчке, там при одобрении/отклонении движок вызывает какие-то методы и функции, это через массовую обработку может или плагином каким
 
Никак? Там же не просто меняется значение в строчке, там при одобрении/отклонении движок вызывает какие-то методы и функции, это через массовую обработку может или плагином каким
Ппц. Туплю под вечер 🤣

1648282155_1-kartinkof-club-p-a-tak-mozhno-bilo-mem-1.jpg
 
Добрый день. Подскажите правильный запрос.
Задача: удалить ссылки из профилей в поле "О себе"

Выглядят они так

Код:
[B][URL='http://ссылка.ru/'][IMG]http://ссылка.ru.png[/IMG][/URL][/B]
или так
[URL]http://www.ссылка.ru/[/URL]

тоесть нужно удалить данные из таблицы xf_user_profile столбец about используя регулярку

Код:
[URL=' - [/URL]
[B] - [/B]

и другие варианы

Как правильно прописать такой запрос?
 
Последнее редактирование:
Подскажите какой запрос в базу для удаления пользователей, чтобы при регистрации у него был самый последний из свободных id, то есть если удалить вручную, id за удаленным всё равно сохраняется, к примеру был 11, при удалении и при новой регистрации будет уже 12.
 
Shremov, не ломайте базу данных, счётчик ID прибавляется для каждой записи автоматически.
 
Shremov, не ломайте базу данных, счётчик ID прибавляется для каждой записи автоматически.
То есть почистить это чтобы ничего не сломать никак нельзя, только если сносить всю базу, верно?
 
То есть почистить это чтобы ничего не сломать никак нельзя, только если сносить всю базу, верно?
Можно, но если вы этого не знаете и не обладаете соответствующими знаниями - вам оно не нужно. Легко сломать
 
Я бы сказал что вообще нельзя.
Смоделируем ситуацию:
  • Первый пользователь всегда с id 1
  • Регистрируется второй, третий и четвёртые пользователи, их id соответственно 2, 3 и 4
  • Второго пользователя было решено снести к чертям, счётчик откатан к 2.
  • Пятый пользователь регистрируется, получает id 2.
  • Все последующие регистрации падают, потому что MySQL не ожидает, что для автоинкремента будут уже существовать записи с последующими id.
Потому не надо мучать жопу, оставьте БД в покое.

Зы: хотя я сейчас посмотрел доку MySQL, и где-то с пятёрки они наконец исправили это дуболомное поведение, воткнув гипер-костыль:
You cannot reset the counter to a value less than or equal to the value that is currently in use. For both InnoDB and MyISAM, if the value is less than or equal to the maximum value currently in the AUTO_INCREMENT column, the value is reset to the current maximum AUTO_INCREMENT column value plus one.
Что переводится дословно как:
Вы не можете сбросить счётчик в значение меньше или равное текущему значению, которое уже используется. Для InnoDB и MyISAM, если значение меньше или больше чем текущее значение в AUTO_INCREMENT колонке, значение будет сброшено в максимально записанное в AUTO_INCREMENT колонке, увеличенное на единицу.
(это наиболее старая доступная).
 
Последнее редактирование:
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу