0
我有兩個表是這樣的:加入來自同一個表中的兩個字段與參數
tabSubject
+-----------+--------------------+--------------------+----------------------+
| SubjectId | SubjectDescription | MeetingIdImportant | MeetingIdUnimportant |
+-----------+--------------------+--------------------+----------------------+
| INT | NVARCHAR(100) | INT NULL | INT NULL |
+-----------+--------------------+--------------------+----------------------+
tabMeeting
+-----------+-------------+
| MeetingId | MeetingDate |
+-----------+-------------+
| INT | DATETIME |
+-----------+-------------+
在我的應用程序有一個過濾器(下拉列表與SubjectIds
)調用存儲過程。
的存儲過程是使用在這樣的表格顯示數據:
+-------------+------------------------------+--------------------------------+
| MeetingDate | Number of important subjects | Number of unimportant subjects |
+-------------+------------------------------+--------------------------------+
| 01.05.2016 | 5 | 3 |
+-------------+------------------------------+--------------------------------+
如果選擇沒有問題,所有可能的會議日期已被顯示(即使他們沒有任何分配主題然而)。如果選擇了一個主題,那麼只有那些會議將這個主題視爲重要或不重要的主題。
例如:
我選擇了主題「測試」。這個主題在2016年5月4日的會議中很重要,在2016年5月11日的會議中並不重要。現在,我希望結果是這樣的:
+-------------+------------------------------+--------------------------------+
| MeetingDate | Number of important subjects | Number of unimportant subjects |
+-------------+------------------------------+--------------------------------+
| 04.05.2016 | 6 | 2 |
| 11.05.2016 | 2 | 4 |
+-------------+------------------------------+--------------------------------+
這正與該代碼在我的存儲過程:
SELECT meeting.MeetingId,
meeting.MeetingDate,
(SELECT COUNT(MeetingIdMS1) FROM dbo.tabSubject WHERE MeetingIdImportant = meeting.MeetingId) AS NumberOfImportantSubjects,
(SELECT COUNT(MeetingIdMS8) FROM dbo.tabSubject WHERE MeetingIdUnimportant = meeting.MeetingId) AS NumberOfUnimportantSubjects
FROM dbo.tabMeeting meeting
INNER JOIN
(
SELECT MeetingIdImportant MeetingId
FROM dbo.tabSubject
WHERE (@SubjectId IS NOT NULL AND SubjectId = @SubjectId)
UNION ALL
SELECT MeetingIdUnimportant
FROM dbo.tabSubject
WHERE (@SubjectId IS NOT NULL AND SubjectId = @SubjectId)
) t ON
CASE
WHEN @SubjectId IS NOT NULL THEN t.MeetingId
ELSE meeting.MeetingId
END = meeting.MeetingId
但是,當我不選擇任何問題,沒有顯示數據。我錯過了什麼?
@diiN_在'Where'條件使用'Exists'而不是使用'內Join' – Eric