我正在使用一个旧的SQL Server数据库,该数据库具有几个类似于以下内容的表:
|-------------|-----------|-------|------------|------------|-----|
| MachineName | AlarmName | Event | AlarmValue | SampleTime | ... |
|-------------|-----------|-------|------------|------------|-----|
| 3 | 180 | 8 | 6.780 | 2014-02-24 | |
| 9 | 67 | 8 | 1.45 | 2014-02-25 | |
| ... | | | | | |
|-------------|-----------|-------|------------|------------|-----|
数据库中有一个单独的表,其中仅包含唯一字符串以及每个唯一字符串的索引。唯一的字符串表如下所示:
|----------|--------------------------------|
| Id | String |
|----------|--------------------------------|
| 3 | MyMachine |
| ... | |
| 8 | High CPU Usage |
| ... | |
| 67 | 404 Error |
| ... | |
|----------|--------------------------------|
因此,当我们想从数据库中获取某些东西时,我们获取各自的行,然后根据索引值查找每个丢失的字符串。
我希望做的是在单个查询中将所有字符串索引替换为实际值,而不必对查询结果进行后处理。
但是,我不知道如何在单个查询中执行此操作。我需要使用多个JOIN吗?我只能通过执行类似的操作来弄清楚如何替换单个值-
SELECT UniqueString.String AS "MachineName" FROM UniqueString
JOIN Alarm ON Alarm.MachineName = UniqueString.Id
任何帮助将非常感激!
是的,您可以对UniqueStrings表进行多个联接,但是可以更改顺序以从要报告的表开始,并为联接的表使用唯一的别名。就像是:
SELECT MN.String AS 'MachineName', AN.String as 'AlarmName' FROM Alarm A
JOIN UniqueString MN ON A.MachineName = MN.Id
JOIN UniqueString AN ON A.AlarmName = AN.Id
对于其他任何列,等等
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句