извините заголовок, я не мог придумать что-то короткое и к точке...
У меня есть таблица 'обновления' с тремя столбцами, текст, идентификатор типа, созданный - текст является текстовым полем, идентификатор типа является внешним ключом от таблицы 'типа', и созданный метка времени. Пользователь вводит обновление, и выберите 'тип', он соответствует также.
Существует соответствующая таблица 'типа' со столбцами 'идентификатор' и 'имя'.
Я пытаюсь закончить с набором результатов со столькими строками, сколько находится в таблице 'типа' и последнем значении от updates.text для конкретной строки в типах. Таким образом, если бы у меня есть 3 типа, 3 строки были бы возвращены, одна строка для каждого типа и новое значение updates.text для рассматриваемого типа.
Какие-либо идеи?
спасибо,
John.
select u.text, u.typeid, u.created, t.name
from (
select typeid, max(created) as MaxCreated
from updates
group by typeid
) mu
inner join updates u on mu.typeid = u.typeid and mu.MaxCreated = u.Created
left outer join type t on u.typeid = t.typeid
Какие колонки вы хотите вернуть?
SELECT t.*,
y.*
FROM TYPE t
JOIN (SELECT u.typeid,
MAX(u.created) 'max_created'
FROM UPDATES u
GROUP BY u.typeid) x ON x.typeid = t.id
JOIN UPDATES y ON y.typeid = x.typeid
AND y.created = x.max_created
Я закончил работать вокруг этого, добавив свойство под названием Selrreference, которая просто возвращает это
. Если кто-то читает это и имеет лучшее решение, я бы хотел услышать это.
SELECT
TYP.id,
TYP.name,
TXT.comment
FROM
dbo.Types TYP
INNER JOIN dbo.Type_Comments TXT ON
TXT.type_id = TYP.id
WHERE
NOT EXISTS
(
SELECT
*
FROM
dbo.Type_Comments TXT2
WHERE
TXT2.type_id = TYP.id AND
TXT2.created > TXT.created
)
или:
SELECT
TYP.id,
TYP.name,
TXT.comment
FROM
dbo.Types TYP
INNER JOIN dbo.Type_Comments TXT ON
TXT.type_id = TYP.id
LEFT OUTER JOIN dbo.Type_Comments TXT2 ON
TXT2.type_id = TYP.id AND
TXT2.created > TXT.created
WHERE
TXT2.type_id IS NULL
в любом случае, если создаваемая дата может быть идентична между двумя строками с одинаковым type_id, то вам нужно будет объяснить это.
Я также предполагал, по крайней мере, один комментарий на один тип существует. Если это не так, то вам нужно было бы сделать небольшую корректировку для этого.