私は次のようなことをしようとしています。その人の最も古い犬の名前も含む人のレコードを返す必要があります (人が 1 匹以上の犬を飼っている場合)。以下のクエリはNULL、dogName. Top 1(確認したところ、有効なデータがあります)結合クエリのandOrder byの部分を削除すると、有効なdogNameが返されますが、「最も古い」犬は返されません。TOP 1and を追加するとOrderByNULL が返されるのはなぜですか?
SELECT
pt.firstName [FirstName],
pt.lastName [LastName],
joinQuery.dogName [dogName]
FROM dbo.PersonTable pt
LEFT OUTER JOIN
(
SELECT
TOP 1
dt.dogName [dogName],
dt.dogAge [dogAge]
FROM
DogTable dt
ORDER BY dt.dogAge
) joinQuery ON joinQuery.PersonId = pt.Id
WHERE
pt.firstName = 'john'
注: これは、フォーラムに投稿することを許可されていないクエリに似たクエリです。
また、私は決して専門家ではないので、この問題を間違って解決しようとしている可能性があります。前もって感謝します。