Jquery 从一个表使用EAV并连接到另一个表
我有一个名为search的表,其中包含以下记录: 搜寻Jquery 从一个表使用EAV并连接到另一个表,jquery,db2,Jquery,Db2,我有一个名为search的表,其中包含以下记录: 搜寻 SID Parameter Value 100 firstname John 100 middle 100 lastname Doe 100 dateOfBirth 100 firstname Jon 100 middle 100 lastname Doe 100
SID Parameter Value
100 firstname John
100 middle
100 lastname Doe
100 dateOfBirth
100 firstname Jon
100 middle
100 lastname Doe
100 dateOfBirth
100 firstname Homer
100 middle
100 lastname Doe
100 dateOfBirth
这基本上是对John%Doe、Jon%Doe或Homer%Doe的一次搜索
我的客户表是:
CustomerID FirstName LastName dateOfBirth
1 Jonathan Doe
2 Johny Doe
3 Jonnie Doe
4 Homer Doe
5 Marge S
然后,我需要加入搜索表,以获得满足这些条件的所有客户
(
AND UPPER( sometable.lastname ) = 'DOE'
AND UPPER( sometable.firstname ) like 'JOHN%'
)
OR
(
AND UPPER( sometable.lastname ) = 'DOE'
AND UPPER( sometable.firstname ) like 'Jon%'
)
OR
(
AND UPPER( sometable.lastname ) = 'DOE'
AND UPPER( sometable.firstname ) like 'Homer%'
)
我不确定pivot功能在db2中是如何工作的。我必须补充一点,我事先知道SID=100。所以,我只需要100的值
有什么想法吗 试试这个:
/*
WITH
SEARCH (SID, Parameter, Value) AS
(
VALUES
(100, 'firstname', 'John')
, (100, 'middle', '')
, (100, 'lastname', 'Doe')
, (100, 'dateOfBirth', '')
, (100, 'firstname', 'Jon')
, (100, 'middle', '')
, (100, 'lastname', 'Doe')
, (100, 'dateOfBirth', '')
, (100, 'firstname', 'Homer')
, (100, 'middle', '')
, (100, 'lastname', 'Doe')
, (100, 'dateOfBirth', '')
)
, CUSTOMER (CustomerID, FirstName, LastName, dateOfBirth) AS
(
VALUES
(1, 'Jonathan', 'Doe', '')
, (2, 'Johny', 'Doe', '')
, (3, 'Jonnie', 'Doe', '')
, (4, 'Homer', 'Doe', '')
, (5, 'Marge', 'S', '')
)
*/
SELECT *
FROM CUSTOMER C
WHERE
EXISTS
(
SELECT 1
FROM SEARCH S
WHERE S.SID=100 AND S.PARAMETER='firstname' AND C.FIRSTNAME LIKE S.VALUE||'%'
)
AND EXISTS
(
SELECT 1
FROM SEARCH S
WHERE S.SID=100 AND S.PARAMETER='lastname' AND C.LASTNAME=S.VALUE
);
您可以用注释掉的测试数据取消对块的注释,并按原样运行语句。您也可以更改测试数据以进行检查