J'ai une table dérivée qui contient le nombre de jointures, j'essaye d'implémenter la pagination mais le ROW_NUMBER() n'est pas séquentiel. Je pense que je sais pourquoi ce n'est pas séquentiel mais existe-t-il un moyen de le forcer à être séquentiel?ROW_NUMBER() à partir Table dérivée avec jointures n'est pas séquentielle?
SELECT [Results].[Row1],
[Results].[Row2],
[Results].[Row3],
FROM (
SELECT [p].[Row1],
[p].[Row2],
[p].[Row3],
ROW_NUMBER() OVER (ORDER BY [p].[Id]) As RowNumber
FROM Table1 As [l]
JOIN Table2 As [p] ON [l].[fId] = [p].[Id]
JOIN Users As [u] ON [p].[fId] = [u].[Id]
JOIN Questions As [q] ON [p].[Id] = [q].[fId]) As Results
J'apprécierais n'importe quelle aide, merci!
Pour être honnête l'ordre par n'est pas pertinent pour moi, je ne comprends tout simplement pas pourquoi le ROW_NUMBER() n'est pas séquentiel? – Lukasz
Par séquentiel, vous voulez dire ordonné, ou est-ce que je me méprends sur le terme? Si oui, c'est parce que vous n'avez pas spécifié comment la requête devrait être commandée; en fonction du plan de requête choisi par l'analyseur de requête (y compris l'utilisation de l'index, etc.), il est possible d'utiliser des opérations qui ne respectent pas la commande. 'ROW_NUMBER()' compte les lignes, et comme vous faites une jointure, vous pouvez avoir plusieurs lignes avec le même '[p]. [Id]' mais avec des numéros de lignes uniques. Utilisez 'RANK()' ou une autre fonction si vous ne le voulez pas, ou soyez plus précis sur la commande dans 'OVER (ORDER BY)'. – Lucero
Non, désolé, ce que je veux dire par séquentiel est que le ROW_NUMBER() est 1, 2, 3, 4, 5 ... N contre 1, 23, 45, 67, 1345 ... N – Lukasz