Запрос к базе данных, чтобы получить самую последнюю обновленную сущность - PullRequest
0 голосов
/ 20 марта 2012

У меня есть две таблицы в базе данных MySQL -

/* main theatre table */
CREATE TABLE THEATRE 
(
id VARCHAR(100) PRIMARY KEY,
name VARCHAR(100) NOT NULL,
location VARCHAR(100),
type VARCHAR(100), /* comma separated values */ 
createDateTime BIGINT NOT NULL /* Current time in milliseconds everytime a record is inserted */
);


/* table to capture all theatre activity */
CREATE TABLE THEATRE_ACTIVITY
(
id VARCHAR(100) PRIMARY KEY,
theatreId VARCHAR(100) NOT NULL REFERENCES THEATRE(id),
activity VARCHAR(20), /* (RATED | CREATED | EDITED) */
createDateTime BIGINT NOT NULL /* Current time in milliseconds everytime a record is inserted */
);

Каждый раз, когда в THEATRE появляется действие, в таблицу T HEATRE_ACTIVITY вставляется запись.Мне нужно получить все (distinct) имена, идентификаторы и местоположения всех THEATRE на основе THEATRE_ACTIVITY createDateTime, от самого последнего до последнего.

Может кто-нибудь помочь мне?1012 *

Ответы [ 3 ]

0 голосов
/ 20 марта 2012

Я предоставил запрос, что я понял из вашей постановки задачи.

select DISTINCT t.id, t.name, t.location from theatre t, theatre_activity ta where t.id = ta.theatreId order by t.id desc
0 голосов
/ 20 марта 2012

Попробуйте этот запрос

select id, name, location, ta.td
from theatre  INNER JOIN 
(select theatreid, MAX(createDateTime) td
from theatre_activity
group by theatreId  ) ta ON theatre.id = ta.theatreId  order by ta.td desc
0 голосов
/ 20 марта 2012
select id, name, location
from theatre  INNER JOIN 
(select theatreid, MAX(createDateTime)
from theatre_activity
group by theatreId) ta ON theatre.id = ta.theatreId

Запрос извлекает все отдельные театры (при условии, что в таблице театров нет дубликатов), в которых есть театральные действия.Если существует более одного действия, то выбирается последнее.Это то, что я понял из вашей постановки проблемы.

...