Я чувствую себя абсолютно глупо. Я ржавый с моим sql.SQL Group By and Join
У меня есть две таблицы, Message и MessageThread. Каждое сообщение принадлежит одному MessageThread с использованием ParentTHreadID в качестве внешнего ключа. Вероятно, вы можете увидеть, где это происходит.
Ну, я хочу сделать что-то подобное. Я хочу получить столбцы из обеих таблиц, сообщений и потоков, но там, где дата datecreated является максимальным в этом потоке. Таким образом, каждая запись будет содержать столбцы потоков и столбцы для одной записи сообщения, которая является самой последней опубликованной в этом потоке сообщений.
Вот что у меня есть до сих пор, что дает мне все столбцы потоков и идентификатор сообщения. Он работает, но использует подзапрос, и мне придется собрать кучу других подзапросов, чтобы получить другие столбцы. Тьфу.
select t.*, (select top 1 m.ID from Message m where m.ParentThreadID = t.ID order by DateCreated desc) as MessageID
from MessageThread t
Бонусные баллы для тех, кто может не только дать мне SQL, но LINQ к SQL или LINQ к NHibernate.
Спасибо, Craig
Я предполагаю, что это довольно невозможно в linq? – fregas
Наверное, нет, но я действительно не так свободно владею linq. – Blorgbeard