All of the love we left behind watching the flashbacks intertwine. I think our lives have just begun.
Народ, помогите, пожалуйста, с запросом, я уже весь мозг себе сломала.
Есть у меня табличка Objects с полями - Id, ParentId, CreateDate, где Id - уникальный Guid-идентификатор, ParentId - родитель нашего объекта, у него может быть несколько наследников, и CreateDate - дата создания объекта. Мне нужно получить список Id (и только их, т.к. это подзапрос, результатом которого должна быть таблица с 1 колонкой айдишников), сгруппированных по ParentId с последней датой создания, то есть если у нас есть таблица:
Id ---------- ParentId ---------- CreateDate
E534F45F-11A2-4984-82EB-0002FDF37AC5 ---------- 68076EC1-CA15-48D5-BBA4-026CE2460EED ---------- 2006-12-18 12:48:20.000
56019FB7-5B9E-4C18-99D8-0003572EAB46 ---------- C1EBB20E-629C-4D13-87F6-000256EF6F94 ---------- 2008-10-28 11:47:11.140
3B91844A-C9FE-4F11-A458-00039BB5EA45 ---------- 68076EC1-CA15-48D5-BBA4-026CE2460EED ---------- 2011-08-01 11:06:51.030
E533DBD1-B648-48D3-A823-0004ADC68050 ---------- C1EBB20E-629C-4D13-87F6-000256EF6F94 ---------- 2012-02-02 10:00:25.287
59F87EB5-3B25-48EB-8F51-00062A9C3F5E ---------- 68076EC1-CA15-48D5-BBA4-026CE2460EED ---------- 2009-08-11 10:19:40.893
то результатом должна быть таблица:
Id
3B91844A-C9FE-4F11-A458-00039BB5EA45
E533DBD1-B648-48D3-A823-0004ADC68050
Я понимаю, что для этих нужд сделали Group by, и вот запрос, который я смогла родить:
Но в этом случае таблица даст 2 колонки, а мне нужна только одна. Но убрать MAX(CreateDate) из SELECT я не могу, потому что иначе не будет вычисляться максимальная дата. Есть идеи как переписать запрос?
АПД. Причем мой запрос ничего не изменит, т.к. при выводе Id группировка бессмысленна.
Есть у меня табличка Objects с полями - Id, ParentId, CreateDate, где Id - уникальный Guid-идентификатор, ParentId - родитель нашего объекта, у него может быть несколько наследников, и CreateDate - дата создания объекта. Мне нужно получить список Id (и только их, т.к. это подзапрос, результатом которого должна быть таблица с 1 колонкой айдишников), сгруппированных по ParentId с последней датой создания, то есть если у нас есть таблица:
Id ---------- ParentId ---------- CreateDate
E534F45F-11A2-4984-82EB-0002FDF37AC5 ---------- 68076EC1-CA15-48D5-BBA4-026CE2460EED ---------- 2006-12-18 12:48:20.000
56019FB7-5B9E-4C18-99D8-0003572EAB46 ---------- C1EBB20E-629C-4D13-87F6-000256EF6F94 ---------- 2008-10-28 11:47:11.140
3B91844A-C9FE-4F11-A458-00039BB5EA45 ---------- 68076EC1-CA15-48D5-BBA4-026CE2460EED ---------- 2011-08-01 11:06:51.030
E533DBD1-B648-48D3-A823-0004ADC68050 ---------- C1EBB20E-629C-4D13-87F6-000256EF6F94 ---------- 2012-02-02 10:00:25.287
59F87EB5-3B25-48EB-8F51-00062A9C3F5E ---------- 68076EC1-CA15-48D5-BBA4-026CE2460EED ---------- 2009-08-11 10:19:40.893
то результатом должна быть таблица:
Id
3B91844A-C9FE-4F11-A458-00039BB5EA45
E533DBD1-B648-48D3-A823-0004ADC68050
Я понимаю, что для этих нужд сделали Group by, и вот запрос, который я смогла родить:
Но в этом случае таблица даст 2 колонки, а мне нужна только одна. Но убрать MAX(CreateDate) из SELECT я не могу, потому что иначе не будет вычисляться максимальная дата. Есть идеи как переписать запрос?
АПД. Причем мой запрос ничего не изменит, т.к. при выводе Id группировка бессмысленна.
Он просто не будет работать.
Работает, но не совсем верно.
Вероятно что-то такое будет работать:
Ок, я завтра попробую и отпишусь. Спасибо!
Я тут думаю - может создать таблицу и присвоить ей результат SELECT? Только я не знаю как. Вернее, гугл предлагает сделать SELECT INTO new_table, но далее эту новую таблицу уже нельзя использовать, как будто значение присвоилось - и все. Что с этим делать даже не представляю.
И дальше в своем запросе я уже использую: