我不知道如何更好地將以下查詢寫入Microsoft SQL Server。T-SQL - 獲取加入條目數
我有三個表格: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,我懷疑我的查詢將在任何意義上都是最佳的。
它的工作原理!謝謝!現在我要深入瞭解它的工作原理:) – Mikhail
不客氣:-)我已經擴大了答案。 –
很好的解釋。雖然我發現了一個小錯誤:如果沒有預設或場景與調查相關聯,則相應的計數等於NULL,而不是零。你能否建議如何解決這個問題? – Mikhail