- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году Одноклассники пресекли более 9 млн подозрительных входов в учетные записи
И выявили более 7 млн подозрительных пользователей
Оксана Мамчуева
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть поля в аттаче. Необходимо вывести последние сообщения из всех диалогов.
Т.е user1=с id 1 и user2=с id 2 , то если строка в таблице будет user1=с id 2 и user2=с id 1 это один и тот же диалог. И мне нужно вывести из каждой такой возможной пары последнее сообщение. Как это можно сделать?
при этом мы знаем только id юзера который залогинен.
В нормальных СУБД мы бы использовали оконные функции (Window Functions). В майсиквел у нас этого нет, поэтому нужно использовать вложенные запросы.
Примерно так:
SELECT *, MAX(`date`) FROM `messages` WHERE `user1`='$user_id' OR `user2`='$user_id' GROUP BY CONCAT(LEAST(`user1`,`user2`),'-',GREATEST(`user1`,`user2`))
Этот CONCAT используется для того, чтобы создать уникальный идентификатор для диалогов между всеми парами пользователей. Точнее, парами пользователя $user_id с другими пользователями.
Например, у всех сообщений между пользователем 123 и пользователем 456 будет вычислен некий уникальный id (вида "123-456"), по которому мы группируем и берём последнее (по дате) сообщение.
Чтобы снизить вычислительную нагрузку, целесообразнее добавить в таблицу ещё один столбец и записывать в него такой идентификатор в момент добавления сообщений.
В нормальных СУБД мы бы использовали оконные функции (Window Functions). В майсиквел у нас этого нет, поэтому нужно использовать вложенные запросы.
Майсиквел? Хмм… никогда о такой не слышал. Наверное, это действительно какая-то ненормальная СУБД.
;13399760']
Майсиквел? Хмм… никогда о такой не слышал. Наверное, это действительно какая-то ненормальная СУБД.
Я майсиквел не юзаю, но в майприквел тоже такого нет.
Майсиквел? Хмм… никогда о такой не слышал. Наверное, это действительно какая-то ненормальная СУБД.
MySQL (/maɪ ˌɛskjuːˈɛl/ "My S-Q-L", officially, but also called /maɪ ˈsiːkwəl/ "My Sequel") 😕