你能帮我建立一个SQL查询来从历史表中检索数据吗?SQL Server:我如何从历史记录表中获取数据?
我是一个只有一周编码经验的新手。我一直在尝试简单的SELECT语句,但碰到了一个绊脚石。
我的足球俱乐部的数据库有三张桌子。第一个链接球的球员:
BallDetail
| BallID | PlayerID | TeamID |
|-------------------|--------|
| 1 | 11 | 21 |
| 2 | 12 | 22 |
第二个列出的事情发生在球:
BallEventHistory
| BallID | Event | EventDate |
|--------|------ |------------|
| 1 | Pass | 2012-01-01 |
| 1 | Shoot | 2012-02-01 |
| 1 | Miss | 2012-03-01 |
| 2 | Pass | 2012-01-01 |
| 2 | Shoot | 2012-02-01 |
,第三个是一个历史变化表。后一球易手,历史记录:
HistoryChanges
| BallID | ColumnName | ValueOld | ValueNew |
|--------|------------|----------|----------|
| 2 | PlayerID | 11 | 12 |
| 2 | TeamID | 21 | 22 |
我试图获取表将列出所有的传球和射门Player 11中已经做了所有的球的球去其他玩家面前。就像这样:
| PlayerID | BallID | Event | Month |
|----------|--------|-------|-------|
| 11 | 1 | Pass | Jan |
| 11 | 1 | Shoot | Feb |
| 11 | 2 | Pass | Jan |
我开始这样:
SELECT PlayerID, BallID, Event, DateName(month, EventDate)
FROM BallDetail bd INNER JOIN BallEventHistory beh ON bd.BallID = beh.BallID
WHERE PlayerID = 11 AND Event IN (Pass, Shoot) ...
但是,如何确保球2也被包括在内,尽管现在有另一名球员是?
这气味像功课! –
不,我不是学生。但这个例子已经被简化和伪装了,它可能会给你这种印象。 –
您是不是在这里错过了一些数据?您正在跟踪拍摄,通过等发生的时间。但是,你没有记录球变成不同球员的时间。 –