У меня есть 4 таблицы SQL Server (версия 2008)
1) USER- to store user information (Fields : UserId,UserName)
2) FILES - to store files uploaded by user (FileId,FileName,UserId)
3) PHOTOS -to store files uploaded by user (PhotoId,PhotoName,UserId)
4) GROUPS= to store groups created by user ( GroupId,GroupName,UserId)
Теперь я хочу получить запись ПОЛЬЗОВАТЕЛЯ с id = 5 вместе с общим количеством файлов, загруженных по идентификатору пользователя 5, Всего фотографий, загруженных пользователемid 5, Всего групп, созданных с помощью идентификатора пользователя 5. Могу ли я получить все это с помощью одного запроса?ИЛИ я должен написать SELECT COUNT каждой таблицы с USER ID = 5 в предложении where (3 запроса ..?)
Я могу написать внутреннее соединение с USER и FILES и выполнить подсчет, чтобы получить числофайлов, загруженных пользователем-носителем. Но как добавить к результату количество фотографий и количество групп?
Каков наилучший подход для этого?
Пример данных
ПОЛЬЗОВАТЕЛЬ
USERID USERNAME
------ ---------
1 Shyju
2 OMG
3 Gus
ФАЙЛЫ
FILEID FILENAME USERID
------ -------- ------
101 Sample1 1
102 Secondone 1
103 NewOne 2
104 BetterOne 3
105 Ocean 3
106 Sea 3
ГРУПП
GROUPID GROUPNAME USERID
------- --------- ------
51 Group-A 1
52 Group-B 2
53 Group-C 2
54 Group-D 2
55 Group-E 3
56 Group-F 3
Результат, который я ищу, равен
Для идентификатора пользователя =1
USERID USERNAME FILECOUNT GROUPCOUNT
------ -------- --------- ----------
1 Shyju 2 1
для UserId = 2
USERID USERNAME FILECOUNT GROUPCOUNT
------ -------- --------- ----------
2 OMG 1 3