Sample Header Ad - 728x90

Alternatives for a LEFT OUTER JOIN query

2 votes
3 answers
14192 views
## 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