我想知道如何更好地将以下查询写入 Microsoft SQL Server。
我有三个表surveys
:survey_presets
和survey_scenes
。它们具有以下列:
CREATE TABLE [dbo].[surveys](
[id] [int] IDENTITY(1,1) NOT NULL,
[caption] [nvarchar](255) NOT NULL,
[creation_time] [datetime] NOT NULL,
)
CREATE TABLE [dbo].[survey_presets](
[id] [int] IDENTITY(1,1) NOT NULL,
[survey_id] [int] NOT NULL,
[preset_id] [int] NOT NULL,
)
CREATE TABLE [dbo].[survey_scenes](
[id] [int] IDENTITY(1,1) NOT NULL,
[survey_id] [int] NOT NULL,
[scene_id] [int] NOT NULL,
)
两者都在列survey_presets
上survey_scenes
有外键。surveys
survey_id
现在我想选择所有调查,并为每个调查提供相应的预设和场景的数量。这是我想要的“伪查询”:
SELECT
surveys.*,
COUNT(survey_presets, where survey_presets.survey_id = surveys.id),
COUNT(survey_scenes, where survey_scenes.survey_id = surveys.id)
FROM surveys
ORDER BY suverys.creation_time
我可以弄乱SELECT DISTINCT
, JOIN
,GROUP BY
等,但我是 T-SQL 的新手,我怀疑我的查询在任何意义上都是最佳的。