【发布时间】:2013-01-03 17:43:15
【问题描述】:
我需要帮助来编写一个简单的程序。让我解释一下我要做什么。
我有 3 张桌子
- tJobOffer
- t应用程序
- tApplicationStatus
我想创建一个程序,返回一个 tJobOffer 列表,其中包含响应此 tJobOffer 的候选人数量。 Candidate 是我的表 tApplicationStatus 的状态。此表链接到链接到 tJobOffer 的 tApplication。申请可以是候选/接受/拒绝/忽略/...
我创建了这个查询:
SELECT
[T].[JobOfferId],
[T].[JobOfferTitle],
COUNT([A].[ApplicationId]) AS [CandidateCount]
FROM [tJobOffer] AS [T]
LEFT JOIN [tApplication] AS [A]
ON [A].[JobOfferId] = [T].[JobOfferId]
LEFT JOIN [tApplicationStatus] AS [S]
ON [S].[ApplicationStatusId] = [A].[ApplicationStatusId]
AND [S].[ApplicationStatusTechnicalName] = 'CANDIDATE'
GROUP BY
[T].[JobOfferId],
[T].[JobOfferTitle]
--[A].[ApplicationStatusId]
ORDER BY [T].[JobOfferTitle]
结果是
> 52ED7C67-21E1-49BB-A1F8-0601E6EED1EA Annonce 1 0
> F26B228D-0C81-4DA8-A287-F8F997CC1F9C Annonce 1b 0
> 9DA60B23-F113-4C7F-9707-2B90C1556D5D Announce 25 2
> 258E11A7-79C1-47B6-8C61-413AA54E2360 Announce 3 0
> DA582383-5DF4-4E1D-837C-382371BDEF57 Announce 6 2
这是不正确的,因为我只有 1 位 Announce 6 候选人。如果设置我的路线
--AND [S].[ApplicationStatusTechnicalName] = 'CANDIDATE'
在评论中结果是一样的。我的查询似乎忽略了这一行。怎么了?
编辑 --
我的正确结果应该是
> 52ED7C67-21E1-49BB-A1F8-0601E6EED1EA Annonce 1 0
> F26B228D-0C81-4DA8-A287-F8F997CC1F9C Annonce 1b 0
> 9DA60B23-F113-4C7F-9707-2B90C1556D5D Announce 25 2
> 258E11A7-79C1-47B6-8C61-413AA54E2360 Announce 3 0
> DA582383-5DF4-4E1D-837C-382371BDEF57 Announce 6 1
【问题讨论】:
-
如果您可以添加具有所需结果的示例记录以及您的问题
:D,那就更好了 -
如果你不在任何地方使用它,你为什么要加入
[tApplicationStatus] AS [S]?
标签: sql sql-server-2008 join