У меня есть 2 таблицы, а именно «Элемент» и «Сообщения».
В таблице элементов есть такие столбцы, как Id, Amount и т. Д.
В таблице сообщений есть такие столбцы, как ItemId, Count,Комментарий и т. Д.
Здесь общей связью между этими двумя таблицами является "Id" из Item и "ItemId" из сообщений.
Столбец «Количество» в таблице «Сообщения» - это просто количество комментариев на ItemId.т.е. когда пользователь обновляет комментарий для любой записи, запись создается в таблице «Сообщения», и счетчик для этого конкретного ItemId отображается как 1. Если пользователь обновляет еще один комментарий к той же записи, счетчик показывает 2 и так далее.Если пользователь не обновляет комментарий для определенной записи, запись вообще не создается в таблице сообщений (NULL).
Я хочу захватить все записи из таблицы элементов независимо от того, обновил ли пользователь комментарийили нет.Если есть 0 комментариев, запрос должен вернуть NULL в столбце Комментарии для этой записи.Но, если пользователь обновил комментарий, он должен подобрать комментарий, имеющий наибольшее значение «Количество».Например, если в одной записи содержится 8 комментариев, запрос должен возвращать только запись, где Messages.Count = 8, а не все 8 записей.Если только один комментарий, то этот комментарий должен быть просмотрен.
Я написал LEFT OUTER JOIN, но не смог пройти, так как он показывает все 8 записей.В результате я нахожу 7 записей с NULL в качестве счетчика и 8-ую запись, показывающую счет как 8, но мне нужна только эта 8-я запись, а не остальные 7.
Любая помощь будет принята с благодарностью.Ниже мой запрос:
Select
Id,
Amount,
Messages.Comment As Comments
From Item
Left Outer Join Messages ON Messages.ItemId=Item.Id
Left Outer Join (Select ItemId, MAX(Id) as max_id from Messages Group by ItemId) T ON Messages.ItemId=T.ItemId and Messages.Id=T.max_id
Where amount > 100