Sql 跨多个表获取值,包括MAX和NULLs
所以我试着解释一下数据库的设置 tbledSql 跨多个表获取值,包括MAX和NULLs,sql,tsql,sql-server-2000,join,Sql,Tsql,Sql Server 2000,Join,所以我试着解释一下数据库的设置 tbled eID | eVal1 | eVal2 ------------------------------------- 1 | Monday | Joe 2 | Tuesday | Bob 3 | Wednesday | Jan 4 | Thursday | Pete tblpaient(我意识到这不是最好的数据库设计!) tblPatientRecords pID | rID ------------ 1 | 1
eID | eVal1 | eVal2
-------------------------------------
1 | Monday | Joe
2 | Tuesday | Bob
3 | Wednesday | Jan
4 | Thursday | Pete
tblpaient(我意识到这不是最好的数据库设计!)
tblPatientRecords
pID | rID
------------
1 | 1
1 | 2
2 | 3
2 | 4
rID | rVal1 | rVal2
-------------------
1 | Ok | Boy
2 | Well | Man
3 | Dead | Kid
4 | Dead | Girl
tblRecords
pID | rID
------------
1 | 1
1 | 2
2 | 3
2 | 4
rID | rVal1 | rVal2
-------------------
1 | Ok | Boy
2 | Well | Man
3 | Dead | Kid
4 | Dead | Girl
我需要的是一个查询,以收回tblAlert中的所有记录,而不管它在tblPatient中是否有相应的值。对于TBLPaient中存在的每个记录,我需要返回相关的最大rID和相关值,即
eID | eVal1 | eVal2 | pID | pVal1 | pVal2 | rID | rVal1 | rVal2
-------------------------------------------------------------------------
1 | Monday | Joe | 1 | Monday | 123 | 2 | Well | Man
2 | Tuesday | Bob | 2 | Tuesday | 456 | 4 | Dead | Girl
3 | Wednesday | Jan | NULL | NULL | NULL | NULL | NULL | NULL
4 | Thursday | Pete | NULL | NULL | NULL | NULL | NULL | NULL
tblEDS、TBLPaient和tblRecords还有很多列,但这里没有显示。看一下外部连接:)这些“活动”、“死亡”等本质上是什么?它们是记录类型还是实际记录?换句话说,
rValue
是否存在重复项?只需用户输入值即可。有很多列,但我只是为了方便添加了一列。可能有重复的,恐怕没有运气。列“dbo.tblPatientRecords.pID”在选择列表中无效,因为它不包含在聚合函数中,并且没有GROUP BY子句。t.rID之后需要逗号,e.eID需要是a.eID。一般来说,这是我想要的,只需要找出如何添加所有列!谢谢。好吧,好吧,你明白了。我承认:我把这件事记在脑子里了,甚至不用SSMS来检查语法。对不起。:)
SELECT
a.eID,
a.eValue,
t.pID,
t.pName,
t.rID,
t.rValue
FROM tblAlert a
LEFT JOIN (
SELECT
p.pID,
p.pName,
p.eID,
r.rID,
r.rValue
FROM tblPatient p
INNER JOIN (
SELECT pID, MAX(rID) AS rID
FROM tblPatientRecords
GROUP BY pID
) pr ON p.pID = pr.pID
INNER JOIN tblRecords r ON pr.rID = r.rID
) t ON a.eID = t.eID