我有两个表,Document
定义DocumentField
如下。
文档(相关栏目仅为简洁起见):
DocumentKey - char(36)
DocTypeKey - char(36)
文档字段:
DocumentKey - char(36)
FieldId - varchar(10)
FieldValue - varchar(255)
DocumentKey
和DocTypeKey
值是标准的 GUID。FieldId
主要是数字 1 到 30 的字符串值(还有其他几个非数字值,因此它是一varchar
列)。FieldValue
只是一个字符串值,可以是任何东西。
样本数据为Document
:
DocKey | DocTypeKey
A | X
B | Y
C | Z
样本数据DocumentField
为:
DocKey | FieldId | FieldValue
A | 1 | PO1234
A | 2 | INV1234
B | 1 | PO5678
B | 2 | INV5678
C | 1 | PO1234
C | 2 | INV2345
我试图运行的查询是:
SELECT *
FROM Document
INNER JOIN DocumentField ON Document.DocumentKey = DocumentField.DocumentKey
WHERE (DocTypeKey IS NOT NULL) AND (FieldId = '1' AND FieldValue LIKE 'PO1%') AND (FieldId = '2' AND FieldValue LIKE 'INV1%')
但是当我添加AND (FieldId = '2' AND FieldValue LIKE 'INV%')
部分时我没有得到结果。它只适用于第一WHERE (DocTypeKey IS NOT NULL) AND (FieldId = '1' AND FieldValue LIKE 'PO%')
部分。鉴于上面的示例数据,我希望它返回:
DocKey | DocTypeKey
A | X
有没有一种简单的方法可以获得我正在寻找的结果?