我正在使用一个旧的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
非常感谢任何帮助!
答案 0 :(得分:0)
是的,您可以对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
等任何其他列