我有一个数据库,我需要查询来统计和计算篮球比赛中球员传球产生的积分数。例如,如果玩家传递给队友并且以2分结果,我的数据库当前将其作为一个实例存储在某个表中。如果通过结果为3分,还有另一个表格存储数据。我想查询一下,所有得到2分的球员传球实例都会被计数,然后乘以2,并且所有得到3分的球员传球实例都会被计数,然后乘以3。SQL中实例的乘以数
这里是我的相关表和SELECT语句:
CREATE TABLE Passer(
PasserID int identity PRIMARY KEY not null
, Forename char(30) not null
, Surname char (30) not null)
CREATE TABLE Teammate(
TeammateID int identity PRIMARY KEY not null
, Forename char(30) not null
, Surname char(30) not null
, PasserID int FOREIGN KEY REFERENCES Passer(PasserID) not null)
CREATE TABLE TwoPointsFromShot(
TwoPointsFromShotID int identity PRIMARY KEY not null
, PasserID int FOREIGN KEY REFERENCES Passer(PasserID) not null
, TeammateID int FOREIGN KEY REFERENCES Teammate(TeammateID) not null)
CREATE TABLE ThreePointsFromShot(
ThreePointsFromShotID int identity PRIMARY KEY not null
, PasserID int FOREIGN KEY REFERENCES Passer(PasserID) not null
, TeammateID int FOREIGN KEY REFERENCES Teammate(TeammateID) not null
--First and Last Name of Passer from TwoPointsFromShot--
SELECT Forename, Surname
FROM Passer
JOIN TwoPointsFromShot ON TwoPointsFromShot.PasserID = Passer.PasserID
--First And Last name of Passer from ThreePointsFromShot--
SELECT Forename, Surname
FROM Passer
JOIN ThreePointsFromShot ON ThreePointsFromShot.PasserID = Passer.PasserID
当我查询从TwoPointsFromShot表PasserID,我收到一个表,看起来像:
| PasserID
------------------- | --------
1 | 1
2 | 3
3 | 3
4 | 2
我收到了类似的表当从ThreeP查询PasserID时ointsFromShot表。
| PasserID
--------------------- | --------
1 | 3
2 | 1
3 | 3
4 | 4
我想返回计数从TwoPointsFromShot的PasserID的实例的数量,并乘以通过2,计算从ThreePointsFromShot和倍数PasserID的实例数量由3,总结这两个查询值,并用播放器的名称替换PasserID。因此,它看起来像这样(如果朱利叶斯·兰德尔是PlayerID 1,达里奥·萨里奇是PlayerID 2,TJ·麦康奈尔是PlayerID 3,和布兰登英格拉姆是PlayerID 4):
| PasserName | PointsFromTwo | PointsFromThree | PassToPoints
--- | --------- | --------------- | ------------------ | ------------
1 | Julius Randle | 2 | 3 | 5
2 | Dario Saric | 2 | 0 | 2
3 | TJ McConnell | 4 | 6 | 10
4 | Brandon Ingram| 0 | 3 | 3
任何帮助将不胜感激!
谢谢,@Jason。我想我需要更新我原来的问题,因为它不清楚。您制作的查询完全符合我的要求。但是,当我运行它时,它只会生成TwoPointsFromShot和ThreePointsFromShot表中标识的名称。我需要一张表格来生成两个表格中的每个人,并在可能的情况下将它们结合起来我要更新我原来的声明,以便更清楚。 – KyleF
@Jason的更新: 我将联接更改为左联接,这解决了我上面概述的问题,但现在我正在为播放器没有值的列创建NULL值,该值生成NULL值在PassToPoint列中添加它们。我正在研究如何让Null值现在显示为0。 – KyleF
@Jason的更新:我在最后一个SELECT语句中的所有值上使用了ISNULL函数来产生我正在寻找的答案。我将使用你的代码发布答案,我想给你信用。我只是不完全知道如何导航,所以我会发布答案,让你编辑它/把它和张贴为你自己的,我会给你投票。 – KyleF