0

У меня возникли трудности с представлением этого запроса, который я пишу для выбора максимальных месяцев и максимальных строк года из заданного «uid». У меня есть 6 данных, в которых 3 данных имеют uid '4', а у других 3 - uid '5'. Я хочу получить максимальные месячные и максимальные данные года из uid 4 и 5. Вот мой запрос критериев. Я получаю этот результат.Таблица сортировки спящего режима на основе максимального года и максимального месяца и группы по идентификатору с использованием критериев

Размер списка результатов: 2
UID: 5 НДИ: CDF Месяц: 11 Год: 2012
UID: 4 НДИ: f58 Месяц: 10 Год: 2012

Но когда я изменить год uid с 2012 по 2013 год, он возвращает только номер uid 4.

DetachedCriteria maxYearQuery = DetachedCriteria.forClass(Demo.class); 
     ProjectionList yearProj = Projections.projectionList(); 
     yearProj.add(Projections.max("contextYear")); 
     yearProj.add(Projections.max("contextMonth")); 
     yearProj.add(Projections.groupProperty("entityUUID")); 
     maxYearQuery.setProjection(yearProj); 

    Criteria crit = session.createCriteria(Demo.class); 
      crit.add(Subqueries.propertiesIn(new String[] {"contextYear","contextMonth", "entityUUID"}, maxYearQuery)); 
      crit.addOrder(Order.desc("entityUUID")); 

моя таблица выглядит следующим образом ..

>

UID: 4 НДИ: CDF Месяц: 10 Год: 2012

UID: 4 НДИ: f58 Месяц: 9 Год : 2012

UID: 5 НДИ: f58 месяц: 8 Год: 2012

UID: 5 НДИ: f58 месяц: 11 Год: 2012

UID: 5 НДИ: f58 Месяц: 10 Год: 2013

UID: 4 НДИ: f58 Месяц: 9 Год: 2012

Я хочу, чтобы 1-й и 5-й записи из моей базы данных. Я застрял на этом этапе. Пожалуйста, дайте несколько рекомендаций, чтобы получить запись по группам.

Заранее спасибо.

ответ

0

Вы хотите этого типа запроса

Выберите Max (месяц), Макс (год) из группы демонстрационного по UID;

+0

Спасибо Dheeraj Да, я хочу такой же тип запроса. Вышеуказанный запрос работает хорошо, но за тот же год. Когда я меняю год, он возвращает только один результат. – James

+0

Он должен вернуть весь объект не только максимум месяца и года. – James

0

я найти решение вашей проблемы

Supose имя таблицы Demo и в котором три колонки UID, месяц, год

Запрос:

выберите a.uid, a.year, не более (месяц) из Demo внутреннего соединения (выберите uid, max (year) m из Demo group на 1) d в группе a.uid = d.uid и a.year = dm на 2;

Он будет работать и проверить его и дать мне обратную связь

+0

Hey Dheeraj благодарит за запрос. Однако я хотел использовать его только с использованием критериев. – James

Смежные вопросы