SQLの内部結合を使用して4つのテーブルをクエリしています。テーブルHtmlText
の1つにModuleID
とVersion
の両方の列が含まれています。私が達成したいのは、特定のサイトまたはPortalID
からModuleID
のMAXバージョンのみを取得することです。ここで私は左内部結合の最新バージョンのモジュールを取得するにはどうすればよいですか?
SELECT TBS.PortalID [PortalID], TBS.TabID [TabID], TBS.TabName [TabName],
TBS.TabPath [TabPath], HTM.Version[Version], TBM.ModuleID [ModuleID],
MDS.ModuleID[ModuleID], HTM.Content[Content]
FROM [MyDB].[dbo].[Tabs] TBS
Inner JOIN [MyDB].[dbo].[Modules] MDS
LEFT JOIN [MyDB].[dbo].[TabModules] TBM
LEFT JOIN [MyDB].[dbo].[HtmlText] HTM
ON HTM.[ModuleID] = TBM.[ModuleID]
ON MDS.[ModuleID] = TBM.[ModuleID]
ON TBS.[TabID] = TBM.[TabID]
WHERE TBS.[PortalID] = '0' AND DataLength(HTM.[Content]) <> 0
AND Version = (Select MAX([Version]) from [MyDB].[dbo].[HtmlText])
を試してみましたが、何であるしかし、これは(代わりに異なるModuleID
の
'ANDバージョン= ... 'をあなたの' ON'条件に移してください。これは 'LEFT JOIN'を' WHERE'節に含めることで 'INNER JOIN'に変換しています。 – Siyual
@Siyual私はあなたの提案を試みました。同じ結果が得られました。 – Skullomania
最後の述語を次のように変更してみてください:(MyDB]。[dbo]。[HtmlText] ModuleId = HTM.ModuleId)からMAX([Version]これは、特定のモジュールの最大バージョンを取得します – SteveR