質問と回答の2つのテーブルがあり、多対多のリレーションテーブル、QuestionsAnswersがあります。質問には並べ替えの列があり、ユーザーに表示する方法を制御できます。また、QuestionAnswersにはソート列があり、質問ごとに回答の順序を制御できます。私の問題は、すべての質問とその回答を最初に質問し、次に質問を並べ替え、次に質問を並べ替えることを選択するSQLクエリを作成しようとしていることです。両方のソート列はNULL可能であり、これらの列の整数はNULLよりも優先すべきです。SQLオーダーオーダーBy
私はOrder Questions Byを得ることができます。正常に動作するようになりましたが、一度二番目のソート列に追加すると、うまくいかなくなります。たとえば、質問にSort = 0という意味があり、表示される最初の質問であるが、Answersに対する優先順位がない場合、QuestionsSort = nullおよびQuestionsAnswers.Sort = 0のQuestionAnswers行の下に注文されます。
これがうまくいく場合のヒントや考えは素晴らしいと思います。
編集:私はこのような何かが、トリックを行う必要が見ることができるものから、
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
'ORDER BY 'は複数のコンマ区切りの列名を受け入れます。 – Powerlord
ええ、私の問題は、いずれかの列がnullになる可能性があるため、並べ替えで互いにジャンプすることです。 QuestionsSortで完全にソートし、各サブグループ内でQuestionsAnswers.Sortでソートしたい。 – rpf3