如何使用一个表中的值来计算另一个表中的结果?

时间:2018-04-03 05:31:10

标签: sql join count

我想在我的SQL查询中添加一个新列,该列将计算该行上的值出现在不同表中的次数。

例如,我们说我有两个单独的表格。

表名:Table_A

Id   | Coach  | Team_Color  | Team_Number
------------------------------------------
001  | Jane   | Orange      | 121
002  | Frank  | Purple      | 232
003  | Tim    | Red         | 343

表名:Table_B

Id   | Team_Number | Player_Name  
----------------------------------
901  | 121         | Jimmy  
902  | 121         | Wesley  
903  | 121         | Samantha
904  | 121         | Wendy
905  | 232         | Tim  
906  | 232         | Sean  
907  | 343         | Andrew
908  | 343         | Erik
909  | 343         | Sarah  
910  | 343         | Allison  
911  | 343         | Desmond
912  | 343         | Kathryn

我想结束这样的事情:

Id   | Coach  | Team_Color  | Team_Number | Player Count
--------------------------------------------------------
001  | Jane   | Orange      | 121         | 4
002  | Frank  | Purple      | 232         | 2
003  | Tim    | Red         | 343         | 6

新专栏名为" Player Count"正在引用Table_A中的Team_Number值,并计算在Table_B上找到的实例数。我如何将其组成一个查询?

1 个答案:

答案 0 :(得分:3)

解决问题的方法:

SELECT A.Id, A.Coach, A.Team_Color,A.Team_Number,Count(B.Id) AS Player_Count
FROM Table_A AS A
INNER JOIN Table_B B
ON A.Team_Number = B.Team_Number
GROUP BY A.Id, A.Coach, A.Team_Color,A.Team_Number;

<强>输出:

Id  Coach   Team_Color  Team_Number  Player_Count
1   Jane    Orange       121          4
2   Frank   Purple       232          2
3   Tim     Red          343          6

点击演示链接:

  

http://sqlfiddle.com/#!9/9c6da4/1

<强>阐释:

在您的问题中,您必须使用JOIN加入公共列上的两个表,即Team_Number。加入后你会得到这样的结果:

Id  Coach  Team_Color  Team_Number  Id   Team_Number    Player_Name
1   Jane    Orange       121        901    121           Jimmy
1   Jane    Orange       121        902    121           Wesley
1   Jane    Orange       121        903    121           Samantha
1   Jane    Orange       121        904    121           Wendy
2   Frank   Purple       232        905    232           Tim
2   Frank   Purple       232        906    232           Sean
3   Tim     Red          343        907    343           Andrew
3   Tim     Red          343        908    343           Erik
3   Tim     Red          343        909    343           Sarah
3   Tim     Red          343        910    343           Allison
3   Tim     Red          343        911    343           Desmond
3   Tim     Red          343        912    343           Kathryn

现在在上面的Result上使用聚合函数COUNT来获得最终结果。