2017-11-24 10 views
0

私はデータベースから企業のリストを選択し、APIでそれらを返すプログラムを書いています。結果は25のインクリメントでページされます。クエリ自体は、私の会社のテーブルからすべてのデータを選択し、その会社に関連付けられた担当者の一覧を取得するためにリンクテーブルを左結合します。問題は25行しか返さないのに対し、左結合は25社を選択するためにもっと多くの行を必要とすることです。最初の25行ではなく、最初の25行を選択するためにクエリを変更するにはどうすればよいですか。左の結合でテーブルから次のN行を選択する

SELECT 
[dbo].[ClientAccounts].*, 
[dbo].[AccountLink].[RepId] 
FROM [dbo].[ClientAccounts] 
LEFT JOIN [dbo].[AccountLink] ON [dbo].[AccountLink].[AccountID] = [dbo].[ClientAccounts].[ID] 
WHERE [dbo].[ClientAccounts].[ClientID] = 10 
ORDER BY [dbo].[ClientAccounts].[ID] ASC 
OFFSET 0 ROWS 
FETCH NEXT 25 ROWS ONLY 

答えて

1

最初に25行を収集し、2番目の手順で結合します。

あなたはこのような何かを試すことができます。

WITH accounts AS (
    SELECT * FROM [dbo].[ClientAccounts] 
    ORDER BY [dbo].[ClientAccounts].[ID] ASC 
    OFFSET 0 ROWS 
    FETCH NEXT 25 ROWS ONLY 
) 
SELECT 
    accounts.*, 
    [dbo].[AccountLink].[RepId] 
FROM accounts 
LEFT JOIN [dbo].[AccountLink] ON [dbo].[AccountLink].[AccountID] = 
[dbo].[ClientAccounts].[ID] 

完全に働いたMS SQL Server 2008の

+0

ため、マイクロソフトでCTE(共通テーブル式)がサポートされていることを、覚えておいてください!ありがとうございました! – Brandon