Я пытаюсь ПРИСОЕДИНИТЬ к человеку и его приятелю из таблицы Persons
в SQL Server 2008, но я не знаю, как написать запрос.INNER JOIN с несколькими эксклюзивными случаями
Вот правила для выбора друзей:
- Если определен приятель, ваш приятель приятель
- Если босс определен, ваш босс ваш приятель
- Если ни один из них определены, ваш приятель кто кроме вас
Это Persons
стол:
Согласно вышеприведенным правилам это должно быть конечный результат:
Я пытался написать запрос, как это:
SELECT p.ID, p.Name, b.Name
FROM persons AS p
INNER JOIN persons AS b ON
CASE
WHEN p.boss = b.id THEN 1
WHEN p.buddy = b.id THEN 1
ELSE 0
END = 1
Но это не возвращают результат я ожидаю.
PS: Если вы хотите попробовать это самостоятельно, это сценарий создания:
CREATE TABLE Persons
([ID] int, [Name] varchar(4), [Boss] int, [Buddy] int)
;
INSERT INTO Persons
([ID], [Name], [Boss], [Buddy])
VALUES
(1, 'Tom', 0, 0),
(2, 'Jack', 1, 0),
(3, 'Emil', 0, 2),
(4, 'Evan', 2, 3)
;
Вы пробовали что-нибудь? –
Конечно, я попробовал INNER JOIN с оператором CASE, но он не работает. –
У вас возникла ошибка? Пожалуйста, опубликуйте свою попытку и что не так с результатом. –