다음과 같은 여러 테이블이있는 이전 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] 삭제
몇 마디 만하겠습니다