Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不在查询中显示某些行的SQL逻辑_Sql_Logic - Fatal编程技术网

不在查询中显示某些行的SQL逻辑

不在查询中显示某些行的SQL逻辑,sql,logic,Sql,Logic,我一直在寻找如何在SQL查询中应用逻辑来实现我的目标。在这一点上,我愿意接受任何建议 我有两个表,它们之间有一个内部连接。这两个表格是所有MLB棒球运动员(过去和现在)的完整列表,以及所有名人堂球员的表格。我期待着拿出一个查询结果,每行一个唯一的球员,并有一个列填写一个Y或N,如果他们在名人堂 表1-球员 ID HallofFameID NameFirst NameLast 表2-Halloff名称 HallofFameID YearID Votes Inducted 每个玩家在玩家表中有一

我一直在寻找如何在SQL查询中应用逻辑来实现我的目标。在这一点上,我愿意接受任何建议

我有两个表,它们之间有一个内部连接。这两个表格是所有MLB棒球运动员(过去和现在)的完整列表,以及所有名人堂球员的表格。我期待着拿出一个查询结果,每行一个唯一的球员,并有一个列填写一个Y或N,如果他们在名人堂

表1-球员

ID
HallofFameID
NameFirst
NameLast
表2-Halloff名称

HallofFameID
YearID
Votes
Inducted
每个玩家在玩家表中有一个条目,但可能会在名人堂表中多次输入玩家ID。在我的带有内部联接的查询结果中,将拉出如下所示的行

Player ID  |   NameFirst  |  NameLast  |  YearID  |  Votes  |  Inducted

001........| Don.........| Sutton......| 1992.....| 100.....| N

001........| Don.........| Sutton......| 1993.....| 89......| N 

001........| Don.........| Sutton......| 1994.....| 100.....| N   

001........| Don.........| Sutton......| 1998.....| 341.....| Y

002........| Mickey......| Mantle......| 1974.....| 341.....| Y So forth...
我希望我的查询结果不显示1992-1997年Don Sutton未当选的行,而只显示1998年,然后向下移动到Mickey Mantle行,显示Y。还有其他未当选的玩家,他们的名字旁边有一个N,我需要在同一个查询结果上显示他们的霍尔资格多年

我已经包括了我的工作SQL以供参考。我不是在找人来编写我的SQL,而是用我可能缺少的关键字或逻辑来为我指明正确的方向。 提前谢谢

Select  DISTINCT
    Master.namefirst, 
    Master.nameLast, 
    Master.HofID,
    HallOfFame.inducted,
    HallOfFame.yearid
FROM 
    HallOfFame 
INNER JOIN 
    Master On HallOfFame.hofID = Master.hofID
Group by 
    Master.nameFirst,
    Master.nameLast,
    Master.PlayerID,
    Master.hofID,
    HallOfFame.inducted,
    HallOfFame.yearid*
请尝试以下方法:

SELECT
  m.namefirst, 
  m.nameLast, 
  m.HallofFameID,
  h1.inducted,
  h1.yearid
FROM HallOfFame h1
INNER JOIN
(
   SELECT PlayerID, MAX(YearID) LatestYear
   FROM HallOfFame 
   GROUP BY PlayerID
) h2 ON h1.PlayerID = h2.PlayerID AND h1.YearID = h2.LatestYear
INNER JOIN players m On h1.PlayerId = m.Id;
这将为您提供:

| NAMEFIRST | NAMELAST | HALLOFFAMEID | INDUCTED | YEARID |
-----------------------------------------------------------
|       Don |   Sutton |            1 |        Y |   1998 |
|    Mickey |   Mantle |            2 |        Y |   1974 |

你能提供表格的完整结构吗(以一种我不需要手工就能运行和创建的格式)?谢谢。查询的结构运行良好,为此我对行名称做了一些更改。成功了。