J'ai donc deux tables, Questions et Réponses, jointes par une table de plusieurs à plusieurs, QuestionsAnswers. Les questions ont une colonne Trier qui me permet de contrôler comment elles sont affichées à l'utilisateur, et QuestionsAnswers a également une colonne de tri qui me permet de contrôler l'ordre des réponses pour chaque question. Mon problème est que j'essaye d'écrire une requête SQL qui sélectionnera toutes les questions et leurs réponses commandées d'abord par Question.Sort puis par QuestionsAnswers.Sort. Les deux colonnes de tri sont nullables et les entiers de ces colonnes doivent avoir la priorité sur les valeurs nulles.Commande SQL par dans l'ordre Par
Je peux obtenir l'ordre par questions.Sort pour fonctionner correctement mais une fois que j'ajoute dans la deuxième colonne de tri, il va de travers. Par exemple, si une Question a un Sort = 0 signifiant qu'elle devrait être la première Question affichée mais n'a aucune préférence pour ses Réponses, elle sera ordonnée sous une ligne QuestionsAnswers qui a Questions.Sort = null et QuestionsAnswers.Sort = 0
Toutes les astuces ou réflexions si cela est encore possible serait géniale.
modifier:
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;
Partagez votre instruction SELECT réelle et donnez un exemple des lignes qu'elle renvoie, juste ce qu'il faut pour illustrer le problème. – Narveson
'ORDER BY' accepte plusieurs noms de colonne séparés par des virgules. – Powerlord
ouais, mon problème est que puisque l'une des colonnes peut être nulle, ils vont sauter les uns sur les autres dans le tri. Je veux trier complètement par Questions.Sort et puis dans chaque tri de sous-groupes par QuestionsAnswers.Sort – rpf3