Try this query:
Select Top 100000 tblAssets.AssetID,
  tblAssets.AssetName,
  tblAssets.Username,
  tblAssetCustom.Manufacturer,
  tblAssetCustom.Model,
  T1.BadBlocks,
  T1.LastBadBlockReported
From tblAssets
  Inner Join tblAssetCustom On tblAssetCustom.AssetID = tblAssets.AssetID
  Inner Join (Select tblNtlog.AssetID,
    Count(tblNtlog.AssetID) As BadBlocks,
    Max(tblNtlog.TimeGenerated) As LastBadBlockReported
  From tblNtlog
    Inner Join tblNtlogMessage On tblNtlogMessage.MessageID = tblNtlog.MessageID
  Where tblNtlogMessage.Message Like '%has a bad block%'
  Group By tblNtlog.AssetID) T1 On T1.AssetID = tblAssets.AssetID
Where tblAssetCustom.State = 1
Order By T1.BadBlocks Desc,
  T1.LastBadBlockReported Desc