2015-01-14 4 views
0

Я пытаюсь выполнить SQL присоединиться к «с изюминкой», что-то вроде этого:SQL присоединиться к столу, на ветвящегося состоянии

SELECT * 
FROM a 
JOIN b ON /* a.type == 'any' ? b.id IS NULL : b.id = a.id */ 

где комментарий написан на C-подобный синтаксис. Как я могу выразить то, что хочу в SQL? (Предпочтительно, ANSI, но специфичный для Oracle Database тоже.)

+1

не знаком с оракулом, и я не уверен, что вы пытаетесь сделать, но для выстрела в темноте вы имеете в виду: 'ON (a. type = 'any' и b.id is null) OR (a.id = b.id) ' – gordatron

+1

@gordatron: Да, это тоже работает в моем случае, но оно зависит от некоторых дополнительных допущений, которые я не указывал в вопрос. Итак, он работает для меня, но не как универсальный ответ;) – doublep

ответ

3
SELECT * 
FROM a 
JOIN b ON (a.type = 'any' AND b.id IS NULL) 
     OR (a.type <> 'any' AND b.id = a.id) 
+0

Отлично, это работает. – doublep

Смежные вопросы