Итак, у меня есть две таблицы, вопросы и ответы, соединенные таблицей отношений многих и многих, QuestionsAnswers. У вопросов есть столбец «Сортировка», который позволяет мне контролировать, как они отображаются пользователю, а в «Вопросах» также есть столбец сортировки, который позволяет мне контролировать порядок ответов для каждого Вопроса. Моя проблема в том, что я пытаюсь написать SQL-запрос, который выберет все вопросы и их ответы, упорядоченные сначала с помощью Question.Sort, а затем с помощью QuestionsAnswers.Sort. Оба столбца сортировки имеют значение NULL, а целые числа в этих столбцах должны иметь приоритет над нулями.SQL Order By In Order By
Я могу получить заказ на вопросы. Сортируйте работу отлично, но как только я добавлю во второй столбец сортировки, это пойдет не так. Например, если у Вопроса есть Sort = 0, это означает, что он должен быть первым Вопросом, но не имеет никаких предпочтений для его ответов, он будет упорядочен ниже строки QuestionAnswers, которая имеет Questions.Sort = null и QuestionsAnswers.Sort = 0
Любые советы или мысли, если это даже выполнимо, были бы замечательными.
редактировать:
SELECT
Q.Id AS QuestionId,
Q.Name AS Question,
A.Id AS AnswerId,
A.Text AS Answer
FROM
dbo.Questions AS Q
INNER JOIN
dbo.QuestionsAnswers AS QA
ON Q.Id = QA.QuestionId
INNER JOIN
dbo.Answers AS A
ON QA.AnswerId = A.Id
ORDER BY
ISNUMERIC(Q.Sort) DESC,
Q.Sort,
Q.Id,
A.Text;
Поделитесь своим фактическим оператором SELECT и дайте образец строк, которые он возвращает, достаточно, чтобы проиллюстрировать проблему. – Narveson 2010-11-29 20:51:29
`ORDER BY` принимает несколько имен разделенных запятыми. – Powerlord 2010-11-29 21:00:11