Сортировка по обнуляемому дочернему свойству в CoolStorage - PullRequest
1 голос
/ 17 сентября 2009

Допустим, у нас есть Films и HeaderItems. Иногда у фильма есть заголовок, связанный с ним OneToOne, но не всегда.

Теперь я хочу отсортировать все фильмы по их названию, НО мне бы хотелось, чтобы фильмы с привязанным к ним HeaderItem сортировали по HeaderItem.Position (если HeaderItem не равно NULL).

Я пытался реализовать OneToMany для фильмов и OneToOne, но я могу заставить сортировку работать. Он не может преобразовать QueryExpression в String или наоборот.

Есть идеи, как это сделать?

Ответы [ 2 ]

1 голос
/ 23 сентября 2009

Хорошо, я понял это.

Во-первых, я изменил отношение между Film и HeaderItem к OneToMany.

Тогда я использовал

Film.OrderedList("$ISNULL(HeaderItem.ShowOnTopInCategory, 0)-, Top10, MovieTitle");

чтобы получить список фильмов сначала по headerItems, а затем по остальным.

Прекрасно работает. Кстати, знак $ перед ISNULL позволяет избежать замены ISNULL анализатором CoolStorage SQL.

0 голосов
/ 17 сентября 2009

Я не пробовал, но это может сработать:

  Film.List().OrderedBy("HeaderItem.Position,Title");

Если это не сработает, боюсь, вам придется создать представление или выполнить специальный SQL, используя операторы CASE в предложении ORDER BY.

...