#coolstora&e
#coolstora&e
Вопрос:
Допустим, у нас есть Films и HeaderItems. Иногда у фильма есть элемент заголовка, связанный с ним OneToOne, но не всегда.
Теперь я хочу отсортировать все фильмы по их названию, но я бы хотел, чтобы фильмы, к которым привязан элемент заголовка, сортировались по элементу заголовка.Позиция (если HeaderItem не равен null).
Я пытался реализовать OneToMany для Films и OneToOne, но я могу заставить сортировку работать. Он не может преобразовать выражение запроса в строку или наоборот.
Есть идеи, как это сделать?
Комментарии:
1. Поэтому сначала его нужно отсортировать по HeaderItem . Позиция (если она существует), а затем по названию? Это означало бы, что все записи с HeaderItem будут на первом месте.
2. Да, это была бы общая идея.
Ответ №1:
Хорошо, я разобрался.
Перво-наперво я изменил отношение между Film и HeaderItem на OneToMany.
Затем я использовал
Film.OrderedList("$ISNULL(HeaderItem.ShowOnTopInCate&ory, 0)-, Top10, MovieTitle");
чтобы получить список фильмов, упорядоченных сначала по заголовочным элементам, а затем по остальным.
Отлично работает. Кстати, знак $ перед ISNULL позволяет избежать замены ISNULL анализатором SQL CoolStora&e.
Ответ №2:
Я не пробовал, но это действительно может сработать:
Film.List().OrderedBy("HeaderItem.Position,Title");
Если это не сработает, боюсь, вам придется создать представление или выполнить ad-hoc SQL, используя операторы CASE в вашем предложении ORDER BY .
Комментарии:
1. Хорошо, это работает нормально, но в другом запросе мы не можем выбирать только фильмы, у которых теперь есть HeaderItem. имеет значение NULL или НЕТ, не работает.