나는 테이블의 이름/값 쌍의 기록을하고 난 값을 확인해야하는 각 이름SQL 쿼리 검사 값은 다른 열 값을 기준으로 조회에 존재
KeyVal에 대한 조회에 대해 존재 - NameValue 쌍 표
| MyID1 | MyRecNumber | MyFieldName | MyFieldValue |
|-------|-------------|-------------|--------------|
| 1 | 1 | FirstField | One |
| 2 | 1 | SecondField | Car |
| 3 | 2 | FirstField | Two |
| 4 | 2 | SecondField | Firetruck |
| 5 | 3 | FirstField | Blue |
| 6 | 3 | SecondField | Car |
LookupTable의 - (CheckVals 테이블) LookupValue와 (KeyVal에서) 이름 값
| MyID2 | MyFieldName | LookupName |
|-------|-------------|------------|
| 1 | FirstField | FieldOne |
| 2 | SecondField | FieldTwo |
에 맞게 표
CheckVals - 유효 값 표 각 필드
| MyID3 | LookupFieldName | LookupValue |
|-------|-----------------|-------------|
| 1 | FieldOne | One |
| 2 | FieldOne | Two |
| 3 | FieldOne | Three |
| 4 | FieldTwo | Car |
| 5 | FieldTwo | Truck |
| 6 | FieldTwo | Bus |
에 나는 하나의 이름 조회에 대한 값을 확인하는 쿼리를 가지고 있지만이 조회 테이블에 대해 모든 이름을 확인하는 방법을 확실입니다. 이 쿼리에서는 쿼리 자체에 조회 값을 지정하므로 LookupTable
을 무시합니다.
DECLARE @AttributeName AS VARCHAR(50)
DECLARE @Lookup AS VARCHAR(50)
SET @AttributeName = 'SecondField'
SET @Lookup = 'FieldTwo';
SELECT
MyRecNumber,
MyFieldName,
MyFieldValue
FROM
dbo.KeyVal kv
WHERE
MyFieldName = @AttributeName
AND MyFieldValue NOT IN
(
SELECT
LookupValue
FROM
dbo.CheckVals cv
WHERE cv.LookupFieldName = @Lookup
)
질문 : 내가 MyFieldValue
의 값이 MyFieldName
및 LookupName
경기에 CheckVals
에있는 경우 에 대한 조회가 KeyVal
테이블의 모든 값의 LookupTable
테이블을 통해 확인 할 수있는 방법은?
CREATE TABLE [dbo].[KeyVal](
[MyID1] [smallint] IDENTITY(1,1) NOT NULL,
[MyRecNumber] [smallint] NULL,
[MyFieldName] [varchar](50) NULL,
[MyFieldValue] [varchar](50) NULL
) ON [PRIMARY]
CREATE TABLE [dbo].[LookupTable](
[MyID2] [smallint] IDENTITY(1,1) NOT NULL,
[MyFieldName] [varchar](50) NULL,
[LookupName] [varchar](50) NULL
) ON [PRIMARY]
CREATE TABLE [dbo].[CheckVals](
[MyID3] [smallint] IDENTITY(1,1) NOT NULL,
[LookupFieldName] [varchar](50) NULL,
[LookupValue] [varchar](50) NULL
) ON [PRIMARY]
샘플 데이터
을 쿼리에서 반환되는 잘못된 값이 두 행을 결과| MyRecNumber | MyFieldName | MyFieldValue |
|-------------|-------------|--------------|
| 2 | SecondField | Firetruck |
| 3 | FirstField | Blue |
샘플 테이블 -
이
내가 얻을 바라고 무엇인가INSERT INTO [dbo].[KeyVal]
([MyRecNumber], [MyFieldName], [MyFieldValue])
VALUES
(1, 'FirstField', 'One'),
(1, 'SecondField', 'Car'),
(2, 'FirstField', 'Two'),
(2, 'SecondField', 'Firetruck'),
(3, 'FirstField', 'Blue'),
(3, 'SecondField', 'Car')
INSERT INTO [dbo].[LookupTable]
([MyFieldName], [LookupName])
VALUES
('FirstField', 'FieldOne'),
('SecondField', 'FieldTwo')
INSERT INTO [dbo].[CheckVals]
([LookupFieldName], [LookupValue])
VALUES
('FieldOne', 'One'),
('FieldOne', 'Two'),
('FieldOne', 'Three'),
('FieldTwo', 'Car'),
('FieldTwo', 'Truck'),
('FieldTwo', 'Bus')
질문을 편집하고 얻으려는 결과를 표시하십시오. –