## Problem ##
I have a SQL statement with an
LEFT OUTER JOIN
which works fine on our Microsoft SQL Server
. My problem is that i have to be compatible with H2 Database
and this one got a bug with OUTER JOINS
.
----------
## SQL Query ##
SELECT *
FROM tSysNls
WHERE nlsGuid IN
( SELECT nlsGuid = CASE
WHEN de_AT.nlsGuid IS NOT NULL THEN de_AT.nlsGuid
WHEN de.nlsGuid IS NOT NULL THEN de.nlsGuid ELSE en.nlsGuid
END
FROM tSysNLS en
LEFT OUTER JOIN tSysNLS de ON en.nlsAttribute=de.nlsAttribute
AND en.nlsClazz=de.nlsClazz
AND de.nlsLocale= 'de'
LEFT OUTER JOIN tSysNLS de_AT ON de.nlsAttribute=de_AT.nlsAttribute
AND de.nlsClazz=de_AT.nlsClazz
AND de_AT.nlsLocale= 'de_AT'
WHERE en.nlsLocale= 'en'
AND en.nlsClazz= 'Contact'
AND en.nlsAttribute= 'firstName')
----------
## Table ##
CREATE TABLE tsysNLS
(
nlsGuid nvarchar(207) NOT NULL,
nlsLocale nvarchar(5) NOT NULL,
nlsClazz nvarchar(100) NOT NULL,
nlsAttribute nvarchar(100) NOT NULL,
nlsDisplayName nvarchar(255) NOT NULL,
nlsOldname nvarchar(50),
nlsDescription nvarchar(255),
nlsShapefilename nvarchar(10)
);
----------
## Example data ##
INSERT INTO tsysNLS(nlsGuid, nlsLocale, nlsClazz, nlsAttribute, nlsDisplayName, nlsOldname, nlsDescription, nlsShapefilename)
VALUES(N'Contact.firstName.en', N'en', N'Contact', N'firstName', N'Name - First Name', N'conFirstName', N'Name - First Name', NULL);
INSERT INTO tsysNLS(nlsGuid, nlsLocale, nlsClazz, nlsAttribute, nlsDisplayName, nlsOldname, nlsDescription, nlsShapefilename)
VALUES(N'Contact.firstName.de', N'de', N'Contact', N'firstName', N'Vorname', N'conFirstName', NULL, N'ConNamVor');
INSERT INTO tsysNLS(nlsGuid, nlsLocale, nlsClazz, nlsAttribute, nlsDisplayName, nlsOldname, nlsDescription, nlsShapefilename)
VALUES(N'Contact.firstName.de_AT', N'de_AT', N'Contact', N'firstName', N'Vorname (AT)', N'conFirstName', NULL, N'ConNamVor');
Asked by lumo
(445 rep)
Sep 22, 2014, 12:51 PM
Last activity: Sep 26, 2014, 05:34 AM
Last activity: Sep 26, 2014, 05:34 AM