次のようなusersテーブルがあると仮定します。
ID | USERNAME | STATUS |
01 | Aname | 1 |
02 | Bname | 1 |
03 | Cname | 2 |
04 | Dname | 1 |
他にも2つのテーブルがあり、ユーザーごとに、ユーザーがインスタンス、ビデオ、および写真に対して「持っている」アイテムを記録し、ビデオテーブルが次のようになっていると仮定します。
ID | USER | VIDEO |
01 | 01 | aaaa |
02 | 01 | bbbb |
03 | 02 | cccc |
04 | 02 | dddd |
05 | 03 | eeee |
06 | 03 | ffff |
07 | 03 | gggg |
写真についても同じです。
ID | USER | PHOTO |
01 | 01 | aaaa |
02 | 02 | cccc |
03 | 02 | dddd |
04 | 03 | eeee |
05 | 03 | ffff |
06 | 03 | gggg |
現在、フィールドで最初のテーブルの結果を並べ替えようとしているSTATUS
ので、ステータス2のユーザーは結果の最後(または最初)に移動しますが、他のユーザーは次のように並べ替えたいと思います。彼らはビデオや写真を持っているか、持っていない。実際、ステータス1のすべてのユーザーについて、ビデオと写真があるかどうかを確認し、「警告、ビデオがありません」などのメッセージを表示します。また、ステータスに基づいて、事実に基づいてすべてのユーザーを注文したいと思います。写真やビデオがあるかどうか...次のようなものです。
SELECT id,username,status,NumOfPhotos,NumOfVideos order by status ASC, numOfPhotos ASC, NumOfVideos DESC
ここNumOfPhotos
で、たとえば、SELECT COUNT(*) FROM PHOTOS WHERE USER = USERS.ID
それは可能ですか?それは単一のステートメントで可能ですか?