Size: a a a

2020 November 16

ыы

ы ы in .NET Talks
Добрый день. Есть таблицы:
CREATE TABLE db_user (
 db_user_id int(10) unsigned NOT NULL AUTO_INCREMENT,
 name varchar(255) NOT NULL,
 balance decimal(10,2) NOT NULL,
 PRIMARY KEY (db_user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

CREATE TABLE db_comment (
 db_comment_id int(10) unsigned NOT NULL AUTO_INCREMENT,
 db_user_id int(10) unsigned NOT NULL,
 text text NOT NULL,
 PRIMARY KEY (db_comment_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

INSERT INTO db_user(name,balance) VALUES ('test', 107.11);
INSERT INTO db_user(name,balance) VALUES ('test1', 305.11);

INSERT INTO db_comment(db_user_id,text) VALUES (1,'test');
INSERT INTO db_comment(db_user_id,text) VALUES(1,'test1');
INSERT INTO db_comment(db_user_id,text) VALUES(2,'test');
INSERT INTO db_comment(db_user_id,text) VALUES(2,'test2')

Я пытаюсь выбрать имя и текст последнего комментария пользователя вот так:

SELECT T.name AS 'username',T.text AS 'usercomment' FROM (SELECT MAX(db_comment_id), U.name, C.text FROM db_user AS U JOIN db_comment AS C ON U.db_user_id = C.db_user_id GROUP BY name) AS T

где последний комментарий определяется максимальным id в каждой группе. Но MAX возвращает обособленный столбец, где id в нем не является id той записи, рядом с которой он стоит. Почему так, и как будет выглядеть итоговый запрос? MySQL 5.1
источник

AI

Arthur Irgashev in .NET Talks
ы ы
Добрый день. Есть таблицы:
CREATE TABLE db_user (
 db_user_id int(10) unsigned NOT NULL AUTO_INCREMENT,
 name varchar(255) NOT NULL,
 balance decimal(10,2) NOT NULL,
 PRIMARY KEY (db_user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

CREATE TABLE db_comment (
 db_comment_id int(10) unsigned NOT NULL AUTO_INCREMENT,
 db_user_id int(10) unsigned NOT NULL,
 text text NOT NULL,
 PRIMARY KEY (db_comment_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

INSERT INTO db_user(name,balance) VALUES ('test', 107.11);
INSERT INTO db_user(name,balance) VALUES ('test1', 305.11);

INSERT INTO db_comment(db_user_id,text) VALUES (1,'test');
INSERT INTO db_comment(db_user_id,text) VALUES(1,'test1');
INSERT INTO db_comment(db_user_id,text) VALUES(2,'test');
INSERT INTO db_comment(db_user_id,text) VALUES(2,'test2')

Я пытаюсь выбрать имя и текст последнего комментария пользователя вот так:

SELECT T.name AS 'username',T.text AS 'usercomment' FROM (SELECT MAX(db_comment_id), U.name, C.text FROM db_user AS U JOIN db_comment AS C ON U.db_user_id = C.db_user_id GROUP BY name) AS T

где последний комментарий определяется максимальным id в каждой группе. Но MAX возвращает обособленный столбец, где id в нем не является id той записи, рядом с которой он стоит. Почему так, и как будет выглядеть итоговый запрос? MySQL 5.1
Мдэ
источник

AI

Arthur Irgashev in .NET Talks
А сделать ордербай по дате коммента слишком сложно ?
источник

ыы

ы ы in .NET Talks
сложно, делать ордер бай по несуществующему столбцу, лол
источник

AI

Arthur Irgashev in .NET Talks
Я не шарю за мускул, но мс скьюл это

select top(1) ....from .... order by ... desc
источник

AI

Arthur Irgashev in .NET Talks
ы ы
сложно, делать ордер бай по несуществующему столбцу, лол
Так о том и речь!
источник

ыы

ы ы in .NET Talks
Слушай, ну если бы было можно, я бы добавил и вопросов таких не задавал
источник

AI

Arthur Irgashev in .NET Talks
Добавь дататайм поле
источник

ыы

ы ы in .NET Talks
Я, конечно, идиот, но не до такой степени
источник

ыы

ы ы in .NET Talks
Определять последний добавленный коммент необходимо по id. Логично, что запись с большим id сделана позже всех
источник

ыы

ы ы in .NET Talks
Arthur Irgashev
Добавь дататайм поле
Так нельзя 😭
источник

ыы

ы ы in .NET Talks
задача такая
источник

AI

Arthur Irgashev in .NET Talks
Ну, тогда делай ордербай по айдишнику
источник

L

Liza in .NET Talks
ы ы
Определять последний добавленный коммент необходимо по id. Логично, что запись с большим id сделана позже всех
не уверена что э
источник

AI

Arthur Irgashev in .NET Talks
И будь готов к артефактам
источник

L

Liza in .NET Talks
это так логично
источник

ыы

ы ы in .NET Talks
А не ебет извиняюсь
источник

ыы

ы ы in .NET Talks
Задача такая
источник

L

Liza in .NET Talks
ы ы
А не ебет извиняюсь
в смысле не ебет
источник

ыы

ы ы in .NET Talks
В прод не попадёт - веселимся
источник