Задавайте вопросы, мы ответим
Вы не зашли.
Приветствую.
Есть две таблицы:
CREATE TABLE IF NOT EXISTS `messages` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL DEFAULT 0,
`text` text COLLATE utf8_unicode_ci NOT NULL,
`shop` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO `messages` (`id`, `user_id`, `text`, `field`) VALUES
(100, 63, 'text1', 3),
(101, 63, 'text2', 4),
(102, 64, 'text3', 4),
(103, 64, 'text3', 4);
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`login` tinytext COLLATE utf8_unicode_ci NOT NULL,
`name` tinytext COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO `users` (`id`, `login`, `name`) VALUES
(63, 'user_login', 'user_name'),
(64, 'another_user_login', 'another_user_name');
нужно получить из таблицы messages самые последние строки по id, для каждой пары user_id, field. в этот же ответ нужно добавить login и name из users по messages.user_id->users.id
ожидаем результат:
100, 63, 'text1', 3, 'user_login', 'user_name'
101, 63, 'text2', 4, 'user_login', 'user_name'
103, 64, 'text3', 4, 'another_user_login', 'another_user_name'
Заранее спасибо за помощь, надеюсь достаточно понятно объяснил.
Неактивен
Группировка по user_id, field (есть как минимум 5 способов, см https://sqlinfo.ru/articles/info/18.html ) и join таблицы `users`, чтобы получить login и name.
Неактивен
vasya написал:
Группировка по user_id, field (есть как минимум 5 способов, см https://sqlinfo.ru/articles/info/18.html ) и join таблицы `users`, чтобы получить login и name.
действительно. я даже не подумал использовать группировку по двум полям. спасибо, то что нужно.
Неактивен
Про оконные функции тоже не забываем, если используете новую версию (8).
Неактивен