みんな、基本的にユーザーが使用した最新のブラウザーを選択するクエリがあります。
これが(簡略化された)テーブル構造です
HITS_TABLE
----------
USERID
BROWSER
HITSDATE
USER_TABLE
----------
USERID
USERNAME
これが、ユーザーが使用した最新のブラウザーを照会する方法です
SELECT U.*, H.BROWSER
FROM USER_TABLE U
CROSS APPLY
(SELECT TOP 1 BROWSER
FROM HITS_TABLE
WHERE HITS_TABLE.USERID = U.USERID
ORDER BY HITS_TABLE.HITSDATE DESC
)as H
HITS_TABLE は数日前に追加されたばかりです。
したがって、そのクエリは、HITS_TABLE を追加した後に Web サイトにアクセスしたユーザーの結果であり、他のユーザーは除外されます。
サンプルケースはこちら
USER_TABLE
-------------------
USERID USERNAME
-------------------
1 'Spolski'
2 'Atwoord
3 'Dixon'
HITS_TABLE
------------------------------
USERID HITSDATE BROWSER
------------------------------
2 15/8/2009 'Firefox 3.5'
1 16/8/2009 'IE 6'
2 16/8/2009 'Chrome'
サンプル結果はこちら
------------------------------
USERID USERNAME BROWSER
------------------------------
1 'Spolsky' 'IE 6'
2 'Atwoord' 'Chrome'
しかし、「不明な」ブラウザで他のユーザーを追加したいです。ここに私の望ましい結果があります
------------------------------
USERID USERNAME BROWSER
------------------------------
1 'Spolsky' 'IE 6'
2 'Atwoord' 'Chrome'
3 'Dixon' 'Unknown'
LEFT OUTER JOINで実現できると思います。しかし、私はいつもこれを持っていました: (私はこの結果を望んでいません)
------------------------------
USERID USERNAME BROWSER
------------------------------
1 'Spolsky' 'IE 6'
2 'Atwoord' 'Chrome'
2 'Atwoord' 'Firefox 3.5'
3 'Dixon' 'Unknown'
私の質問が明確であることを願っています。