У меня есть две таблицы: ItemCategories и элементы. ItemCategories перечисляет категории для элементов и содержит текстовые строки, зависящие от языка. Столбец CultureCode определяет, к какому языку принадлежит текст.Условные левые соединения
ItemCategories
ID Name CultureCode
1 Food 'en-us'
2 Clothing 'en-us'
3 Computers 'en-us'
4 Books 'en-us'
1 Essen 'de-de'
2 Kleidung 'de-de'
3 Rechner 'de-de'
4 Bücher 'de-de'
Предметы
ID CategoryID1 CategoryID2
4 1 NULL
5 NULL 2
6 3 4
7 NULL NULL
В таблице перечислены Элементы каждого элемента и значения под CategoryID1 и CategoryID2 относятся к полю ID в CategoryItems. Значения CategoryID1 и CategoryID2 могут быть как null, так и установлены в ID или только один из них установлен на значение ID.
Мне нужно создать SQL (T-SQL), который возвращает идентификатор из элементов вместе с его соответствующим именем из ItemCategories, когда для параметра CultureCode задан конкретный язык. Так что, если мой CultureCode установлен в «ан-нас», результаты должны быть:
ID CategoryID1 CategoryID2 CategoryName1 CategoryName2
4 1 NULL Food Null
5 NULL 2 null Clothing
6 3 4 Computers Books
7 NULL NULL null null
Это то, что я до сих пор:
Select I.*
From Items I
Left Join ItemCategories IC On (IC.ID = I.CategoryID1) Or (IC.ID = I.CategoryID2)
where (IC.CultureCode = 'en-us') Or (IC.CultureCode is null)
Но это не дает мне результаты, которые я хочу ,
Что вы дадите? – Nathan