2017-09-25 53 views
0

我有一个表格(GamesSchedule),其中包含比赛名称,裁判名称,日期,然后是包含所有比赛列表的视图。我需要的是在特定日期范围内的特定裁判每场比赛中的比赛数量 - 而且我确实需要空值以查看是否有比赛裁判员没有参赛(并且,我没有找到了答案,帮助我正确地):从表和视图中选择,使用左连接和where子句

Tourney | Games 
---------------- 
Mens 1st | 10 
Womens 1st | 7 
Cup  | 0 
Youth  | 3 
Mens 2nd | 2 
Womens 2nd | 0 
---------------- 

这不幸的是,让我只有在裁判工作游戏(所以只有四行了六的比赛,没有杯赛如上):

SELECT t.Tourney, COUNT(t.Tourney) AS Games 
     FROM GamesSchedule t 
RIGHT JOIN Tournaments v 
     ON t.Tourney = v.Tourney 
    WHERE Date > 42603 AND Date < 43011 
     AND (D1='Joe Smith' OR D2='Joe Smith' OR D3='Joe Smith') 
    GROUP BY t.Tourney; 
+0

您应该提供更多信息,例如GamesSchedule表的结构(至少与此查询相关的字段)以及您想要获取的列。 –

回答

0

尝试将移动条件从WHERE更改为JOIN

SELECT t.Tourney, COUNT(t.Tourney) AS Games 
FROM GamesSchedule t 
RIGHT JOIN Tournaments v 
    ON t.Tourney = v.Tourney 
AND Date > 42603 
AND Date < 43011 
AND 'Joe Smith' IN (D1, D2, D3) 
GROUP BY t.Tourney; 
+0

关闭但没有雪茄。我在结果中再增加一行,但它不包含锦标赛的名称(只有比赛的数量为0),应该有更多。比赛的总数实际上超过了20.感谢您的建议,但我还没有到场。 – GFS

+0

@GFS请将prerere http://rextester.com演示,我相信我可以根据您的要求调整此查询。 – lad2025